2

私はSparkとScalaの初心者です。

Kryo をシリアル化して scala コードに記述したファイルを Spark で読み取り、分析する必要があります。

import com.esotericsoftware.kryo.Kryo
import com.esotericsoftware.kryo.io.Output

val kryo:Kryo = new Kryo()
val output:Output = new Output(new FileOutputStream("filename.ext",true))

//kryo.writeObject(output, feed) (tested both line)
kryo.writeClassAndObject(output, myScalaObject)

これは、複雑なオブジェクトであるシリアル化されたオブジェクト (myScalaObject) を使用してファイルを作成するための疑似コードです。

ファイルはうまく書いているようですが、Spark RDD で読むと問題が発生します

Spark の擬似コード:

val conf = new SparkConf()
    .setMaster("local")
    .setAppName("My application")
    .set("spark.executor.memory", "1g")


conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.set("spark.kryo.registrator", "myScalaObject")

val sc = new SparkContext(conf)

val file=sc.objectFile[myScalaObject]("filename.ext")

val counts = file.count()

実行しようとすると、次のエラーが表示されます。

org.apache.spark.SparkException: 
Job aborted: Task 0.0:0 failed 1 times (most recent failure: 
Exception failure: java.io.IOException: file: filename.ext not a SequenceFile)

このタイプのファイルを Spark で読み取ることは可能ですか?

この解決策が不可能な場合、複雑なファイル構造を作成して Spark で読み取るための適切な解決策は何ですか?

ありがとうございました

4

1 に答える 1