Apache spark 如何将数据集写入Spark Structured Streaming-Java8上的kafka输出主题
我试图在Spark 2.1中使用ForeachWriter接口,但我无法使用它。Spark 2.2.0将支持它。要了解如何使用它,我建议您阅读以下博文: 您可以尝试Spark 2.2.0 RC2[1],也可以等待最终版本 如果您不能使用Spark 2.2.0+,另一个选择是查看此博客: 它有一个非常简单的卡夫卡水槽,也许对你来说就足够了Apache spark 如何将数据集写入Spark Structured Streaming-Java8上的kafka输出主题,apache-spark,java-8,spark-structured-streaming,Apache Spark,Java 8,Spark Structured Streaming,我试图在Spark 2.1中使用ForeachWriter接口,但我无法使用它。Spark 2.2.0将支持它。要了解如何使用它,我建议您阅读以下博文: 您可以尝试Spark 2.2.0 RC2[1],也可以等待最终版本 如果您不能使用Spark 2.2.0+,另一个选择是查看此博客: 它有一个非常简单的卡夫卡水槽,也许对你来说就足够了 [1] 首先要知道的是,如果您使用spark结构化流并处理流数据,您将拥有一个流数据集 也就是说,编写流式数据集的方法是调用ForeachWriter,这是对的
[1] 首先要知道的是,如果您使用spark结构化流并处理流数据,您将拥有一个流数据集 也就是说,编写流式数据集的方法是调用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)
*/
}
我在用Java 8,但谢谢你,伙计。稍后我将尝试:在Java8中实现这段代码一点也不困难。您将拥有一个ForeachWriter write=new ForeachWriterclasz。其余的都是私有的void。我现在就让你去做