2016-05-24 24 views
1

JavaRDD<String>JavaRDD<Row>に匿名機能を使用して変換しようとしています。ここに私のコードは次のとおりです。スタックのスパーク:JavaRDD.mapは匿名機能を受け入れません

Exception in thread "main" org.apache.spark.SparkException: Task not serializable 

詳細:

Serialization stack: 
    - object not serializable (class: com.cpny.ml.supervised.FeatureExtractor, value: [email protected]) 
    - field (class: com.cpny.ml.supervised.FeatureExtractor$1, name: this$0, type: class com.cpny.ml.supervised.FeatureExtractor) 
    - object (class com.cpny.ml.supervised.FeatureExtractor$1, [email protected]) 
    - field (class: org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1, name: fun$1, type: interface org.apache.spark.api.java.function.Function) 
    - object (class org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1, <function1>) 
    at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:40) 

私が間違っているつもりですすべてのアイデア

JavaRDD<String> listData = jsc.textFile("/src/main/resources/CorrectLabels.csv"); 
JavaRDD<Row> jrdd = listData.map(new Function<String, Row>() { 
        public Row call(String record) throws Exception { 
         String[] fields = record.split(","); 
         return RowFactory.create(fields[1], fields[0].trim()); 
        } 
       }); 

しかし、これを行うに、私は戻ってエラーを取得しますか?

ありがとうございます! K

+0

「FeatureExtractor」とは何ですか? –

+0

FeatureExtractorはクラス名です - ここではanony関数があります。 – Kiran

+0

完全なコードを再現してください。 'FeatureExtractor'がシリアライズされている場合は、何らかの形でクロージャーで使用しています。 –

答えて

1

あなたが取得している例外は、匿名機能とは関係ありません。

FeatureExtractorクラスはSerializableではないか、またはSerializableフィールドを含まないかのいずれかです。

0

ありがとう@slovit .. 私の以前の設定は、JavaRDDを取得するためにFeatureExtractorを呼び出すMainClassでした。このクラスは前にSerializableではありませんでした。今1を行った後、私はもはや..

しかし、別のノートに問題を取得していない、MainClassはとしてSparkJobを提出する私の出発点だった:

./bin/spark-submit --class com.cpny.ml.supervised.MainClass --master spark://localhost:7077 /mltraining/target/mltraining-0.0.1-SNAPSHOT.jar 

しかしMainClassSerializableとしてマークされていません。しかし、私がMainClassに無名関数を含めると、私はその問題を知りません。 MainClassはどのようにシリアライズされたのですか?

PS:これはスパークの質問ではないかもしれませんが、基本的なJavaの質問..申し訳ありません!

+0

コードが表示されない場合は、このような質問に答えるのは難しいです。 Spark変換に 'FeatureExtractor'のインスタンスを渡していた可能性が高いです。しかし、実際のコードがなければ、確かに答えることは難しいです。 – slovit

関連する問題