私はspark 2.1.0とhadoop 2.7.3を使用しています。Spark newAPIHadoopFile(FileInputFormat)を使用するとNotSerializableExceptionが発生する
私はmainメソッドを持つだけで一つのクラスにnewAPIHadoopFile、非常に簡単なコードを使用しようとしていた:私はStackOverflowの中で多くの記事をチェックし、それでもエラーまし
val spark = SparkSession.builder().appName("test").master("local[*]").getOrCreate()
val sparkContext = spark.sparkContext
val sparkConf = sparkContext.getConf
val file = "src/main/resources/chat.csv"
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
sparkContext.getConf.registerKryoClasses(Array(
Class.forName("org.apache.hadoop.io.LongWritable"),
Class.forName("org.apache.hadoop.io.Text")
));
sparkConf.set("spark.kryo.classesToRegister", "org.apache.hadoop.io.LongWritable, org.apache.hadoop.io.Text")
val rdd = sparkContext.newAPIHadoopFile(file, classOf[KeyValueTextInputFormat], classOf[Text], classOf[Text])
rdd.collect().foreach(println)
:
をjava.io.NotSerializableException: org.apache.hadoop.io.Text
Serialization stack:
\t - object not serializable (class: org.apache.hadoop.io.Text, value: How about Italian?"})
\t - field (class: scala.Tuple2, name: _1, type: class java.lang.Object)
\t - object (class scala.Tuple2, ( How about Italian?"},))
\t - element of array (index: 0)
\t - array (class [Lscala.Tuple2;, size 3)
\t at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:40)
編集:chat.csvの内容:{: "ゲルト"、へ: "メリッサ"、メッセージ: "夕食を持っていたいですか?" から}
{から: "メリッサ"、へ
: "ゲルト"、メッセージ: "OK?
どうイタリアについて\"}
が助けてください...
はあなたがここにクラス名とすべて始まるからコードを貼り付けることはできますか? –
全てのコードはこちらです。メインメソッドの宣言とインポートを除きます。 – Furyegg