【问题标题】:Kafka+Java+SparkStreaming+reduceByKeyAndWindow throw Exception:org.apache.spark.SparkException: Task not serializableKafka+Java+SparkStreaming+reduceByKeyAndWindow 抛出异常:org.apache.spark.SparkException:任务不可序列化
【发布时间】:2017-01-01 15:26:56
【问题描述】:

我是 kafka 和 spark 的新手,我正在尝试做一些计数,但没有成功!问题的详细情况如下。谢谢!

代码如下:

JavaPairDStream<String,Integer> counts = wordCounts.reduceByKeyAndWindow(new AddIntegers(), new SubtractIntegers(), Durations.seconds(8000), Durations.seconds(4000));

异常如下:

线程“Thread-3”org.apache.spark.SparkException 中的异常:任务 不可序列化 org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:166) 在 org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:158) 在 org.apache.spark.SparkContext.clean(SparkContext.scala:1623) 在 org.apache.spark.streaming.dstream.PairDStreamFunctions.reduceByKeyAndWindow(PairDStreamFunctions.scala:333) 在 org.apache.spark.streaming.dstream.PairDStreamFunctions.reduceByKeyAndWindow(PairDStreamFunctions.scala:299) 在 org.apache.spark.streaming.api.java.JavaPairDStream.reduceByKeyAndWindow(JavaPairDStream.scala:352) 在 KafkaAndDstreamWithIncrement.KDDConsumer.run(KDDConsumer.java:110) 引起:java.io.NotSerializableException: KafkaAndDstreamWithIncrement.KDDConsumer

【问题讨论】:

  • 告诉我们addIntegerssubtractIntegers
  • 感谢您的建议!之前,我总是关注“如何覆盖 reduceBykeyAndWindow”。但现在我发现 addIntgers 和 subractIntegers 可能是错误的。我试过了,成功了,再次感谢!

标签: java serialization spark-streaming


【解决方案1】:

代码如下(定义静态):

static Function2<Integer,Integer,Integer> AddIntegers = new Function2<Integer,Integer,Integer>(){
    @Override
    public Integer call (Integer i1,Integer i2){
       return i1 + i2;
    }
};
static Function2<Integer,Integer,Integer> SubtractIntegers = new Function2<Integer,Integer,Integer>(){
    @Override
    public Integer call (Integer i1,Integer i2){
       return i1 - i2;
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2015-05-31
    • 1970-01-01
    • 2016-07-27
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多