에있는 파일에 .gz로드하는 동안 나는 HDFS에서에서 .gz 파일의 큰 숫자를 가지고 있고이 데이터를 처리하는 PigStorage를 사용하여로드하려고 나는 다음과 같은 예외를오류 돼지 스크립트
자바를 얻고있다. io.EOFException : 예기치 않은 입력 스트림의 끝 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)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.mapRedordLayer.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.r un (MapTask.java:363) at org.apache.hadoop.mapred.Child $ 4.run (Child.java:255) at java.security.AccessController.doPrivileged (네이티브 메소드) 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)
일부 파일이 손상되었을 수 있습니다.
돼지는 손상된 파일을 건너 뛸 수있는 어떤 종류의 오류 처리 기능을 가지고 있습니다. 다음은 사용중인 샘플 코드입니다.
cal = load '$inputdir/CAL/*/*/*/*/*/*/*.gz' USING PigStorage('\t');
이 문제를 해결해야만했고이 문제를 해결하는 방법은 먼저 사전 프로세스에서 손상된 모든 파일을 제거하고 좋은 파일을 매퍼에게 공급하는 것이 었습니다. 불행히도 PIG는 손상되었으므로 사전 프로세스를 작성하거나 Java 매퍼에서 처리해야합니다. –