hadoop - 在Pig脚本中加载.gz文件时出错

标签 hadoop apache-pig

我在HDFS中有大量的.gz文件,我正尝试使用PigStorage加载它们以处理数据,但出现以下异常

java.io.EOFException: Unexpected end of input stream at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:137) at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:77) at java.io.InputStream.read(InputStream.java:85) at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:205) at org.apache.hadoop.util.LineReader.readLine(LineReader.java:169) at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.nextKeyValue(LineRecordReader.java:139) at org.apache.pig.builtin.TextLoader.getNext(TextLoader.java:55) at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:530) at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:363) at org.apache.hadoop.mapred.Child$4.run(Child.java:255) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232) at org.apache.hadoop.mapred.Child.main(Child.java:249)



这可能是某些文件损坏的结果。

pig 是否有任何类型的错误处理,通过它我可以跳过损坏的文件。以下是我正在使用的示例代码:
cal  = load '$inputdir/CAL/*/*/*/*/*/*/*.gz' USING PigStorage('\t');

最佳答案

这可能与损坏的文件有关。

您可以使用mapred.max.map.failures.percent设置(或mapred.max.reduce.failures.percent,但这与您的情况无关)来控制可以忽略的失败百分比。

问题在于,单个映射器可以读取多个gz文件,因此损坏的文件会使映射器失败,并使其跳过可以的文件。

关于hadoop - 在Pig脚本中加载.gz文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794644/

相关文章:

hadoop - 查找 pig 脚本中两行之间的差异

hadoop - 如何提高水槽的性能

hadoop - HDFS block 大小

java - Hive通用UDF:Hive不能按预期进行转换,原因如下:java.lang.ClassCastException:无法将java.util.ArrayList转换为java.util.Map

hadoop - 无法查询(从 Hive)在 ​​Pig 中创建的 Parquet 文件

logging - 跨多个作业聚合 Hadoop 作业计数器

hadoop - 如何在 HDFS 中查找文件的创建日期

hadoop - PL/SQL 能否可靠地转换为 Pig Lating 或带有 Pig Latin 和 Hive 的 Oozie 管道

hadoop - 在 Pig 中对多列使用 SUM 时出错

hadoop - elasticsearch-hadoop 1.3 M3代理支持不起作用