Spark은 rdd.saveAsObjectFile("file")
으로 파일에 rdd를 저장할 수 있습니다. 스파크 밖에서이 파일을 읽어야합니다. doc에 따르면,이 파일은 기본 spark serializer를 사용하여 표준 Java 직렬화로 직렬화 된 일련의 객체입니다. 그러나, 파일을 헤더와 개체 사이에 구분 기호가있는 것 같아요. 이 파일을 읽고 jdeserialize을 사용하여 클래스 정의가 없으므로 각 Java/Scala 객체를 deserialize해야합니다.spark rdd.saveAsObjectFile의 파일 형식에 대한 설명서
rdd.saveAsObjectFile("file")
(Kryo 시리얼 라이저가 아닌 표준 시리얼 라이저) 파일 형식에 대한 설명서는 어디에서 찾을 수 있습니까? VladoDemcak의 답변에 따라
업데이트 근무 예 : 그것은 매우 흥미로운 질문은
import org.apache.hadoop.io._
import org.apache.hadoop.conf._
import org.apache.hadoop.fs._
import org.apache.hadoop.io._
def deserialize(data: Array[Byte]) =
new ObjectInputStream(new ByteArrayInputStream(data)).readObject()
val path = new Path("/tmp/part-00000")
val config = new Configuration()
val reader = new SequenceFile.Reader(FileSystem.get(new Configuration()), path, config)
val key = NullWritable.get
val value = new BytesWritable
while (reader.next(key, value)) {
println("key: {} and value: {}.", key, value.getBytes)
println(deserialize(value.getBytes()))
}
reader.close()
https://gist.github.com/dportabella/dd8886ebb8d5f0eddd1196e1c30e34f6 –