gpt4 book ai didi

scala - 附加模式下水印聚合查询的空输出

转载 作者:行者123 更新时间:2023-12-04 00:59:52 25 4
gpt4 key购买 nike

我使用 Spark 2.2.0-rc1。

我有一个卡夫卡 topic我正在查询一个正在运行的带水印的聚合,带有 1 minute水印,发给 consoleappend输出模式。

import org.apache.spark.sql.types._
val schema = StructType(StructField("time", TimestampType) :: Nil)
val q = spark.
readStream.
format("kafka").
option("kafka.bootstrap.servers", "localhost:9092").
option("startingOffsets", "earliest").
option("subscribe", "topic").
load.
select(from_json(col("value").cast("string"), schema).as("value"))
select("value.*").
withWatermark("time", "1 minute").
groupBy("time").
count.
writeStream.
outputMode("append").
format("console").
start

我正在 Kafka 中推送以下数据 topic :
{"time":"2017-06-07 10:01:00.000"}
{"time":"2017-06-07 10:02:00.000"}
{"time":"2017-06-07 10:03:00.000"}
{"time":"2017-06-07 10:04:00.000"}
{"time":"2017-06-07 10:05:00.000"}

我得到以下输出:

scala> -------------------------------------------
Batch: 0
-------------------------------------------
+----+-----+
|time|count|
+----+-----+
+----+-----+

-------------------------------------------
Batch: 1
-------------------------------------------
+----+-----+
|time|count|
+----+-----+
+----+-----+

-------------------------------------------
Batch: 2
-------------------------------------------
+----+-----+
|time|count|
+----+-----+
+----+-----+

-------------------------------------------
Batch: 3
-------------------------------------------
+----+-----+
|time|count|
+----+-----+
+----+-----+

-------------------------------------------
Batch: 4
-------------------------------------------
+----+-----+
|time|count|
+----+-----+
+----+-----+

这是预期的行为吗?

最佳答案

向 Kafka 推送更多数据应该会触发 Spark 输出一些东西。当前的行为完全是由于内部实现。

当你推送一些数据时,StreamingQuery 会生成一个批处理来运行。当该批次完成时,它会记住该批次中的最大事件时间。然后在下一批,
因为您正在使用 append模式下,StreamingQuery 将使用最大事件时间和水印从 StateStore 中驱逐旧值并输出它。因此,您需要确保至少生成两个批次才能看到输出。

关于scala - 附加模式下水印聚合查询的空输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com