spark 2.1.0 및 hadoop 2.7.3을 사용하고 있습니다.Spark newAPIHadoopFile (FileInputFormat)을 사용할 때 NotSerializableException이 발생했습니다.
내가 주요 방법으로 하나의 클래스에 newAPIHadoopFile, 아주 간단한 코드를 사용하려고 시도했다 : I에 유래 많은 게시물을 확인하지만, 여전히 오류가있어
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의 내용 :
{에서 "거트"에 "멜리사", 메시지 : "저녁 식사를 원하십니까?"}에서
{: "멜리사"에 "거트", 메시지 : "좋아
어떻게 이탈리아어에 대한 \"}
이 도와주세요 ...
당신이 클래스 이름과 모두와 함께 시작 여기에 코드를 붙여 넣을 수 있습니까? –
모든 코드는 여기에 있습니다 .. 주요 방법 선언 및 가져 오기를 제외하고. – Furyegg