【发布时间】:2015-05-31 11:53:02
【问题描述】:
这是一个工作代码示例:
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();
}
});
我收到以下错误:
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)
【问题讨论】:
-
好吧,如果它正在工作,那就太好了:)。如果不是,可以用
-Dsun.io.serialization.extendedDebugInfo=true开启Java序列化调试。 -
谢谢,不行,我试过了。 JavaDStream
lines = messages.map(new Function , String>() { @Override public String call(Tuple2 tuple2) { return tuple2._2(); } }) ;这行代码有问题。 -
很确定这段代码是 Java 而不是 Scala(即标签)
标签: scala apache-spark apache-kafka