我有以下代码,我想知道为什么它只生成一个批处理:
df = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "IP").option("subscribe", "Topic").option("startingOffsets","earliest").load()
// groupby on slidings windows
query = slidingWindowsDF.writeStream.queryName("bla").outputMode("complete").format("memory").start()
应用程序使用以下参数启动:
spark.streaming.backpressure.initialRate 5
spark.streaming.backpressure.enabled True
kafka 主题包含大约 1100 万条消息。由于 initialRate 参数,我预计它至少应该生成两批,但它只生成一个。谁能说出为什么 spark 只在一批中处理我的代码?
我正在使用 Spark 2.2.1 和 Kafka 1.0。
最佳答案
那是因为 spark.streaming.backpressure.initialRate
参数只被旧的 Spark Streaming 使用,而不是 Structured Streaming。
相反,使用maxOffsetsPerTrigger
:http://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html
顺便说一句,另请参阅此答案:How Spark Structured Streaming handles backpressure? , SSS 现在没有完整的背压支持
关于apache-spark - Spark 结构化流与 kafka 导致只有一个批处理(Pyspark),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50527893/