org.apache.spark.SparkException: Tâche de ne pas sérialisable

Ce travail est une exemple de code:

JavaPairDStream<String, String> messages = KafkaUtils.createStream(javaStreamingContext, zkQuorum, group, topicMap);
messages.print();
JavaDStream<String> lines = messages.map(new Function<Tuple2<String, String>, String>() {
    @Override
    public String call(Tuple2<String, String> tuple2) {
        return tuple2._2();
    }
});

J'obtiens l'erreur ci-dessous:

ERROR:
org.apache.spark.SparkException: Task not serializable
    at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:166)
    at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:158)
    at org.apache.spark.SparkContext.clean(SparkContext.scala:1435)
    at org.apache.spark.streaming.dstream.DStream.map(DStream.scala:438)
    at org.apache.spark.streaming.api.java.JavaDStreamLike$class.map(JavaDStreamLike.scala:140)
    at org.apache.spark.streaming.api.java.JavaPairDStream.map(JavaPairDStream.scala:46)
  • Eh bien, si ça fonctionne c'est génial :). Si elle ne l'est pas, vous pouvez activer la sérialisation Java débogage avec -Dsun.io.serialization.extendedDebugInfo=true.
  • Merci,c'est pas ok,j'ai essayé. JavaDStream<String> lignes = messages.carte(la nouvelle Fonction<Tuple2<String, String>, String>() { @Override public String appel(Tuple2<String, String> tuple2) { return tuple2._2(); } }); Cette ligne de code de problèmes.
  • Assez sûr que ce code est en Java et non Scala (c'est à dire de la balise)
InformationsquelleAutor xiaolong li | 2015-03-27