我写了我的自定义项来将文件加载到pig中。它可以很好地加载文本文件,但是,现在我还需要能够阅读 .gz
文件。我知道我可以解压文件然后处理,但我只想读 .gz
文件,而不需要解压缩它。
我的自定义项从 LoadFunc
,然后在我的costom输入文件中 MyInputFile extends TextInputFormat
. 我还实施了 MyRecordReader
. 只是想知道 TextInputFormat
有问题吗?我试过了 FileInputFormat
,仍然无法读取文件。有人写自定义项读取数据吗 .gz
以前存档?
1条答案
按热度按时间inb24sb21#
TextInputFormat
同时处理gzip文件。看看它的读卡器(LineRecordReader
)initialize()方法,其中正确的压缩编解码器已初始化。还要注意gzip文件不是可拆分的(即使它们位于s3上),因此您可能需要使用可拆分的格式(例如:lzo)或未压缩的数据来利用所需的并行处理级别。如果gzip数据存储在本地,则可以按此处所述一步解压并将其复制到hdfs。或者已经在hdfs上了
hadoop fs -cat /data/data.gz | gzip -d | hadoop fs -put - /data/data.txt
会更方便。