파일을 Pig에로드하기 위해 UDF를 작성했습니다. 그것은 텍스트 파일을로드하는 데 잘 작동하지만 지금은 .gz
파일을 읽을 수 있어야합니다. 파일을 압축 해제하고 처리 할 수 있음을 알고 있지만 압축을 풀지 않고 .gz
파일을 읽으 려합니다.PIG UDF로드 .gz 파일이 실패했습니다.
내 UDF를 LoadFunc
에서 확장하고 내 costom 입력 파일 MyInputFile extends TextInputFormat
을 확장했습니다. 나는 또한 MyRecordReader
을 구현했다. 그냥 TextInputFormat
확장 경우 궁금해? FileInputFormat
을 시도했지만 여전히 파일을 읽을 수 없습니다. 누구든지 전에 파일 .gz
에서 UDF 읽기 데이터를 썼습니다?
'TextInputFormat'은 gzip 파일을 처리 할 수 있습니다. 적절한 CompressionCodec이 초기화되는 RecordReader ('LineRecordReader')'initialize()'메소드를보십시오. 또한 gzip 파일은 분할 할 수 없습니다. –
감사합니다. splittable이 아니라면 먼저 압축을 풀 것을 고려할 것입니다. 파일을 미리 압축 해제 한 다음 PIG에로드하는 것이 가장 좋습니다. 이렇게하는 가장 좋은 방법은 무엇입니까? 감사. –
데이터 크기를 알지 못하면 가장 쉬운 방법은 hundfs에 _uncompressed_ 데이터를 저장하는 것입니다. 분할 가능한 형식 ('LZO')을 사용하여 다시 포장 할 수도 있습니다. gzip 파일을 추출하는 방법; 로컬 디스크 -> HDFS, 참조 : http://bigdatanoob.blogspot.hu/2011/07/copy-and-uncompress-file-to-hdfs.html. 이미 hdfs에 있다면 :'hadoop fs -cat /data/data.gz | gzip -d | hadoop fs -put -/data/data.txt' –