У меня есть данный кусок кода. Я запускаю это на Spark 2.3.1, используя Zeppelin 0.8.0 и org.apache.spark: spark-streaming-kafka-0-10_2.11: 2.3.1.
stream.window(Minutes(5),Seconds(20)).foreachRDD { rdd =>
val lines = rdd.map(record => record.value())
val words = lines.flatMap(line => line.split(" "))
val pairs = words.map(word => (word, 1))
val wordCounts = pairs.reduceByKey((x: Int, y: Int) => (x + y))
wordCounts.toDF("word", "count").createOrReplaceTempView("words")
}
Однако, когда я пытаюсь запросить таблицу слов внутри скользящего окна, я получаю следующую ошибку:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0.0 in stage 540.0 (TID 3036) had a not serializable result: org.apache.kafka.clients.consumer.ConsumerRecord
Serialization stack:
- object not serializable (class: org.apache.kafka.clients.consumer.ConsumerRecord, value: ConsumerRecord(topic = test, partition = 0, offset = 249, CreateTime = 1547626717449, checksum = 3583250337, serialized key size = -1, serialized value size = 4, key = null, value = test))
Любые предложения о том, как заставить это работать? Похоже, очень простой пример.
Если я запускаю его без оконной функции, он работает правильно.