繁体   English   中英

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

[英]Error while loading .gz files in Pig Script

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

java.io.EOFException:org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java)上org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:137)的输入流意外结束:77)在org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:205)在java.io.InputStream.read(InputStream.java:85)在org.apache.hadoop.util.LineReader.readLine( org.apache.hadoop.mapreduce.lib.input.LineRecordReader.nextKeyValue(LineRecordReader.java:139)处的org.apache.pig.builtin.TextLoader.getNext(TextLoader.java:55)处的LineReader.java:169) org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.nextKeyValue(MapTask.java:530)上的.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:194)在org.apache.hadoop org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)的.mapreduce.MapContext.nextKeyValue(MapContext.java:67)org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763) )在org 位于org.apache.hadoop.mapred.Child $ 4.run(Child.java:255)的.apache.hadoop.mapred.MapTask.run(MapTask.java:363)位于java.security.AccessController.doPrivileged(本机方法) org.apache.hadoop.mapred.Child.main(Child.org)上的javax.security.auth.Subject.doAs(Subject.java:396)在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)在org.apache.hadoop.mapred.Child.main(Child。 Java:249)

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

猪是否有任何类型的错误处理,通过它我可以跳过损坏的文件。 以下是我正在使用的示例代码:

cal  = load '$inputdir/CAL/*/*/*/*/*/*/*.gz' USING PigStorage('\t');

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM