gpt4 book ai didi

scala - 具有三路连接的 Spark 结构化流水印

转载 作者:行者123 更新时间:2023-12-01 18:12:23 25 4
gpt4 key购买 nike

我有 3 个数据流:foobarbaz

有必要使用LEFT OUTER JOIN将这些流连接到以下链中:foo -> bar -> baz

这里尝试使用内置的 rate 流来模拟这些流:

val rateStream = session.readStream
.format("rate")
.option("rowsPerSecond", 5)
.option("numPartitions", 1)
.load()

val fooStream = rateStream
.select(col("value").as("fooId"), col("timestamp").as("fooTime"))

val barStream = rateStream
.where(rand() < 0.5) // Introduce misses for ease of debugging
.select(col("value").as("barId"), col("timestamp").as("barTime"))

val bazStream = rateStream
.where(rand() < 0.5) // Introduce misses for ease of debugging
.select(col("value").as("bazId"), col("timestamp").as("bazTime"))

这是将所有这些流连接在一起的第一种方法,假设 foobarbaz 的潜在延迟很小(~ 5秒):

val foobarStream = fooStream
.withWatermark("fooTime", "5 seconds")
.join(
barStream.withWatermark("barTime", "5 seconds"),
expr("""
barId = fooId AND
fooTime >= barTime AND
fooTime <= barTime + interval 5 seconds
"""),
joinType = "leftOuter"
)

val foobarbazQuery = foobarStream
.join(
bazStream.withWatermark("bazTime", "5 seconds"),
expr("""
bazId = fooId AND
bazTime >= fooTime AND
bazTime <= fooTime + interval 5 seconds
"""),
joinType = "leftOuter")
.writeStream
.format("console")
.start()

通过上面的设置,我能够观察以下数据元组:

  • (some_foo, some_bar, some_baz)
  • (some_foo, some_bar, null)

但仍然缺少 (some_foo, null, some_baz)(some_foo, null, null)

有什么想法,如何正确配置水印以获得所有组合?

更新:

barTime 上意外地为 foobarStream 添加额外水印后:

val foobarbazQuery = foobarStream
.withWatermark("barTime", "1 minute")
.join(/* ... */)`

我可以获得这个 (some_foo, null, some_baz) 组合,但仍然缺少 (some_foo, null, null)...

最佳答案

我留下一些信息仅供引用。

链接流-流连接无法正常工作,因为 Spark 仅支持全局水印(而不是运算符水印),这可能会导致连接之间的中间输出丢失。

Apache Spark 社区不久前就指出了这个问题并进行了讨论。以下是了解更多详细信息的链接: https://lists.apache.org/thread.html/cc6489a19316e7382661d305fabd8c21915e5faf6a928b4869ac2b4a@%3Cdev.spark.apache.org%3E

(免责声明:我是发起邮件线程的作者。)

关于scala - 具有三路连接的 Spark 结构化流水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636823/

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