在我的项目中,我必须阅读Parquet文件。有很多小尺寸的Parquet文件。我需要一些结合Parquet输入格式,可以结合小文件,根据分裂的大小,使Map的数量将减少。请让我知道,如果有一些实用程序或任何简单的方法来做到这一点。谢谢
g52tjvyc1#
parquetinputformat是fileinputformat的子级,它支持多个文件输入。所以,简而言之,您不需要combileparquetfileinputformat只需使用fileinputformat.addinputpaths来指定输入。parquetinputformat的来源https://github.com/parquet/parquet-mr/blob/master/parquet-hadoop/src/main/java/parquet/hadoop/parquetinputformat.javap、 如果你有很多小Parquet文件,很可能你做错了什么。
jslywgbw2#
import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.RecordReader; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat; import org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader; import org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReaderWrapper; import org.apache.hadoop.mapreduce.lib.input.CombineFileSplit; import parquet.avro.AvroReadSupport; import parquet.hadoop.ParquetInputFormat; import java.io.IOException; public class CombineParquetInputFormat<T> extends CombineFileInputFormat<Void, T> { @Override public RecordReader<Void, T> createRecordReader(InputSplit split, TaskAttemptContext context) throws IOException { CombineFileSplit combineSplit = (CombineFileSplit) split; return new CombineFileRecordReader(combineSplit, context, CombineParquetrecordReader.class); } private static class CombineParquetrecordReader<T> extends CombineFileRecordReaderWrapper<Void, T> { public CombineParquetrecordReader(CombineFileSplit split, TaskAttemptContext context, Integer idx) throws IOException, InterruptedException { super(new ParquetInputFormat<T>(AvroReadSupport.class), split, context, idx); } } }
一个很棒的关于集成测试的博客http://bytepadding.com/big-data/spark/combineparquetfileinputformat/
2条答案
按热度按时间g52tjvyc1#
parquetinputformat是fileinputformat的子级,它支持多个文件输入。所以,简而言之,您不需要combileparquetfileinputformat
只需使用fileinputformat.addinputpaths来指定输入。
parquetinputformat的来源https://github.com/parquet/parquet-mr/blob/master/parquet-hadoop/src/main/java/parquet/hadoop/parquetinputformat.java
p、 如果你有很多小Parquet文件,很可能你做错了什么。
jslywgbw2#
一个很棒的关于集成测试的博客http://bytepadding.com/big-data/spark/combineparquetfileinputformat/