Đây là một ví dụ mã làm việc:org.apache.spark.SparkException: Nhiệm vụ không serializable
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();
}
});
tôi nhận được báo lỗi dưới đây:
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)
Vâng, nếu nó làm việc thật tuyệt :). Nếu không, bạn có thể bật gỡ lỗi tuần tự hóa Java bằng '-Dsun.io.serialization.extendedDebugInfo = true'. –
Cảm ơn bạn, không ổn, tôi đã thử. JavaDStream lines = messages.map (Chức năng mới , String>() {@Override public String gọi (Tuple2 tuple2) { trở tuple2._2(); } }); Dòng sự cố mã này. –
Chắc chắn mã này là Java chứ không phải Scala (nghĩa là thẻ) – SparkleGoat