enter code here
无法并行化结构化流中的多个接收器写入。
我正在使用结构化流从多个Kafka主题读取数据,然后转换数据,然后将其写入MySQL。对于每个输入/转换流,创建不同的接收器。 问题在于,这些中的每一个都会在持续的延迟后得到处理。 Spark似乎并未并行处理不同流的处理。 大部分时间都花在了驱动程序上。
def readStream(topic: String, brokers: String, groupId: String): DataFrame = {
ss
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", brokers)
.option("subscribe", topic)
.option("enable.auto.commit", false)
.option("group.id", groupId)
.option("failOnDataLoss", false)
.option("startingOffsets", startOffset)
.load()
}
def process(): Unit = {
val ss = SparkUtil.getAndCreateSparkSession()
val topics = Array("topic-1", "topic-2")
val streams = topics.map(t => readStream(t, "localhost:9092", "kafka-reader"))
val processedStream = streams.map(s => transform(s))
val queries = processedStream.map(stream => stream.writeStream.outputMode(OutputMode.Append()).foreachBatch(save _).start())
ss.streams.awaitAnyTermination()
}