我写了我的UDF将文件加载到Pig中。它适用于加载文本文件,但是,现在我还需要能够读取.gz
文件。我知道我可以解压缩文件然后进行处理,但我只想阅读.gz
文件而不解压缩它。
我的UDF从LoadFunc
延伸,然后在我的costom输入文件MyInputFile extends TextInputFormat
中。我也实施了MyRecordReader
。只是想知道扩展TextInputFormat
是否是问题?我试过FileInputFormat
,仍然无法读取文件。有人在之前写过来自.gz
文件的UDF读取数据吗?
答案 0 :(得分:0)
TextInputFormat
处理gzip文件以及。看看它的RecordReader的(LineRecordReader
)initialize()方法,其中正确的 CompressionCodec 被初始化。另请注意,gzip文件不可拆分(即使它们位于S3上),因此您可能需要使用可拆分格式(例如:LZO)或未压缩数据来利用所需的级别并行处理。
如果您的gzip压缩数据存储在本地,您可以按照here所述的步骤解压缩并将其复制到hdfs。或者如果它已经在hdfs上了
hadoop fs -cat /data/data.gz | gzip -d | hadoop fs -put - /data/data.txt
会更方便。