[HADOOP] 하둡에서 CompressionCodec를 사용하는 방법
HADOOP하둡에서 CompressionCodec를 사용하는 방법
감속기에서 o / p 파일을 압축하기 위해 다음을 수행하고 있습니다.
OutputStream out = ipFs.create( new Path( opDir + "/" + fileName ) );
CompressionCodec codec = new GzipCodec();
OutputStream cs = codec.createOutputStream( out );
BufferedWriter cout = new BufferedWriter( new OutputStreamWriter( cs ) );
cout.write( ... )
그러나 3 번째 줄에서 null 포인터 예외가 발생했습니다.
java.lang.NullPointerException
at org.apache.hadoop.io.compress.zlib.ZlibFactory.isNativeZlibLoaded(ZlibFactory.java:63)
at org.apache.hadoop.io.compress.GzipCodec.createOutputStream(GzipCodec.java:92)
at myFile$myReduce.reduce(myFile.java:354)
또한 JIRA를 따라갔습니다.
내가 잘못하고 있는지 제안 해 주시겠습니까?
해결법
-
==============================
1.표준 OutputFormat 처리 외부에서 압축을 사용하려면 CompressionCodecFactory를 사용해야합니다 (@linker 답변 참조).
표준 OutputFormat 처리 외부에서 압축을 사용하려면 CompressionCodecFactory를 사용해야합니다 (@linker 답변 참조).
CompressionCodecFactory ccf = new CompressionCodecFactory(conf) CompressionCodec codec = ccf.getCodecByClassName(GzipCodec.class.getName()); OutputStream compressedOutputSream = codec.createOutputStream(outputStream)
-
==============================
2.당신은 잘못하고있다. 이를 수행하는 표준 방법은 다음과 같습니다.
당신은 잘못하고있다. 이를 수행하는 표준 방법은 다음과 같습니다.
TextOutputFormat.setOutputCompressorClass(job, GzipCodec.class);
GzipCodec는 구성 가능하며 직접 인스턴스화하면 올바르게 초기화해야합니다 (setConf, ...)
이것을 시도하고 그것이 작동하는지 알려주십시오.
from https://stackoverflow.com/questions/10155602/how-to-use-compressioncodec-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] META-INF / services에서 항목을 덮어 쓰지 않는 뚱뚱한 항아리를 만드는 방법 (0) | 2019.08.12 |
---|---|
[HADOOP] FileInputFormat을 사용하여 맵 메소드에서 행 번호 가져 오기 (0) | 2019.08.12 |
[HADOOP] Hadoop HDFS의 블록 개념 (0) | 2019.08.12 |
[HADOOP] 하드 코드 된 날짜 문자열 대신 Hive 날짜 함수를 사용할 때 Hive 쿼리 성능이 느려 집니까? (0) | 2019.08.12 |
[HADOOP] Hive 시작 오류 : java.lang.NoClassDefFoundError : org / apache / hadoop / hive / conf / HiveConf (0) | 2019.08.12 |