[HADOOP] Spark의 원시 바이트 배열 쓰기 및 읽기 - 시퀀스 파일 SequenceFile 사용
HADOOPSpark의 원시 바이트 배열 쓰기 및 읽기 - 시퀀스 파일 SequenceFile 사용
Apache Spark을 사용하는 파일에 RDD [Array [Byte]]를 쓰고 다시 읽으십니까?
해결법
-
==============================
1.일반적인 문제는 BytesWritable에서 NullWritable로 예외를 캐스팅 할 수없는 이상한 것으로 보입니다. 다른 일반적인 문제는 BytesWritable getBytes는 바이트를 전혀 얻지 못하는 완전히 무의미한 더미입니다. getBytes가하는 일은 결국 0을 추가하는 것보다 바이트를 얻는 것입니다! copyBytes를 사용해야합니다.
일반적인 문제는 BytesWritable에서 NullWritable로 예외를 캐스팅 할 수없는 이상한 것으로 보입니다. 다른 일반적인 문제는 BytesWritable getBytes는 바이트를 전혀 얻지 못하는 완전히 무의미한 더미입니다. getBytes가하는 일은 결국 0을 추가하는 것보다 바이트를 얻는 것입니다! copyBytes를 사용해야합니다.
val rdd: RDD[Array[Byte]] = ??? // To write rdd.map(bytesArray => (NullWritable.get(), new BytesWritable(bytesArray))) .saveAsSequenceFile("/output/path", codecOpt) // To read val rdd: RDD[Array[Byte]] = sc.sequenceFile[NullWritable, BytesWritable]("/input/path") .map(_._2.copyBytes())
from https://stackoverflow.com/questions/24083332/write-and-read-raw-byte-arrays-in-spark-using-sequence-file-sequencefile by cc-by-sa and MIT license