我试图在Spark 2.1它的界面中使用ForeachWriter
接口,但我不能使用它。
答案 0 :(得分:1)
它将在Spark 2.2.0中得到支持。要了解如何使用它,建议您阅读此博文:this part of the documentation
您可以尝试使用Spark 2.2.0 RC2 [1]或等待最终版本。
如果您不能使用Spark 2.2.0 +:
,另一个选择是看一下这个博客它有一个非常简单的Kafka水槽,也许这对你来说足够了。
答案 1 :(得分:0)
首先要知道的是,如果您使用Spark结构化Stream并处理流数据,那么您将拥有一个流式数据集。
话虽如此,编写此流式数据集的方法是通过调用 ForeachWriter ,你做对了..
import org.apache.spark.sql.ForeachWriter
val writer = new ForeachWriter[Commons.UserEvent] {
override def open(partitionId: Long, version: Long) = true
override def process(value: Commons.UserEvent) = {
processRow(value)
}
override def close(errorOrNull: Throwable) = {}
}
val query =
ds.writeStream.queryName("aggregateStructuredStream").outputMode("complete").foreach(writer).start
写入主题的功能如下:
private def processRow(value: Commons.UserEvent) = {
/*
* Producer.send(topic, data)
*/
}