簡體   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