PIG UDF加载.gz文件失败

时间:2012-12-20 20:17:19

标签: map hadoop gzip user-defined-functions apache-pig

我写了我的UDF将文件加载到Pig中。它适用于加载文本文件,但是,现在我还需要能够读取.gz文件。我知道我可以解压缩文件然后进行处理,但我只想阅读.gz文件而不解压缩它。

我的UDF从LoadFunc延伸,然后在我的costom输入文件MyInputFile extends TextInputFormat中。我也实施了MyRecordReader。只是想知道扩展TextInputFormat是否是问题?我试过FileInputFormat,仍然无法读取文件。有人在之前写过来自.gz文件的UDF读取数据吗?

1 个答案:

答案 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会更方便。