【发布时间】:2019-08-17 03:36:40
【问题描述】:
我想不断详细说明数据集流的行(最初由 Kafka 发起):根据我想更新 Radis 哈希的条件。这是我的代码 sn-p(lastContacts 是上一个命令的结果,它是这种类型的流:org.apache.spark.sql.DataFrame = [serialNumber: string, lastModified: long]。这扩展为 org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]):
class MyStreamProcessor extends ForeachWriter[Row] {
override def open(partitionId: Long, version: Long): Boolean = {
true
}
override def process(record: Row) = {
val stringHashRDD = sc.parallelize(Seq(("lastContact", record(1).toString)))
sc.toRedisHASH(stringHashRDD, record(0).toString)(redisConfig)
}
override def close(errorOrNull: Throwable): Unit = {}
}
val query = lastContacts
.writeStream
.foreach(new MyStreamProcessor())
.start()
query.awaitTermination()
我收到一个巨大的堆栈跟踪,相关部分(我认为)是这样的:java.io.NotSerializableException: org.apache.spark.sql.streaming.DataStreamWriter
谁能解释为什么会发生这种异常以及如何避免?谢谢!
这个问题与以下两个有关:
【问题讨论】:
标签: apache-spark redis apache-kafka databricks azure-databricks