gpt4 book ai didi

apache-spark - Spark结构化流在公共(public) View 上具有不同触发间隔中继的多个查询

转载 作者:行者123 更新时间:2023-12-02 12:10:49 25 4
gpt4 key购买 nike

假设我们有一个结构化的流应用程序,其中有多个具有不同触发间隔并依赖于某些公共(public) View 的接收器。 Spark将如何处理公共(public) View :自动缓存或多次处理?

以下是伪代码

val ds = spark.readStream.format("kafka").load()

ds.select(udf1(a) as a, udf2(b) as b, udf3(c) as c)
.withWatermark(c, "1 minute")
.createTempView("t0") // how will this line be handled?

spark.sql("select max(a) from t0 group by window(c, '1 minute')")
.writeStream.format("kafka")
.trigger(ProcessingTime("1 minute")) //one minute
.start()

spark.sql("select max(b) from t0 group by window(c, '1 minute')")
.writeStream.format("kafka")
.trigger(ProcessingTime("5 minutes"))
.start()

spark.streams.awaitAnyTermination()

更新

水印会独立处理吗?我的猜测是水印是在每个writeStream中单独维护。

最佳答案

在您的情况下,这两个查询独立地从 Kafka 读取,数据将被处理两次。当您调用 Dataset.createTempView 时,Spark 只需记住 Dataset 的逻辑计划名称即可。下次当您使用临时 View 时,Spark 只需插入逻辑计划,其行为就像您在数据集上调用方法一样。 Spark 中临时 View 的概念与数据库临时 View 非常相似

关于apache-spark - Spark结构化流在公共(public) View 上具有不同触发间隔中继的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45735934/

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