Spark SQL DSL 中的窗口(固定、滑动等)和水印支持

Posted

技术标签:

【中文标题】Spark SQL DSL 中的窗口(固定、滑动等)和水印支持【英文标题】:Window (fixed, sliding, etc.) & watermark support in Spark SQL DSL 【发布时间】:2019-03-08 01:04:42 【问题描述】:

Spark SQL(DSL 而非 API)是否支持结构化流中的窗口化功能? Flink 中类似的东西看起来像:

SELECT user, SUM(amount) FROM Orders GROUP BY TUMBLE(proctime,
INTERVAL '1' DAY), user

我在官方结构化流媒体网站上找到的唯一 SQL 示例如下,它不包含窗口功能示例:

df.createOrReplaceTempView("updates")

spark.sql("select count(*) from updates")  // returns another streaming DF

【问题讨论】:

【参考方案1】:

Spark 在 2.4 版本的结构化流中还没有通过 DSL 的窗口功能。版本。 Apache Flink 有这些,因为它使用Apache Calcite SQL 解析器,并且因为 Flink 正在推动 SQL 流式传输。

但是,此功能可能会在未来的版本中添加。

最佳

【讨论】:

感谢您的回复,但我认为您关于窗口支持的声明不是真的。 Spark 结构化流支持事件时间的窗口操作(参见此处:spark.apache.org/docs/latest/…)。此外,方解石中的窗口支持与数据流模型中的窗口功能不同。我更新了问题的标题以澄清这一点。 我知道你甚至有时间支持和窗口化,但关键是你不能像我所说的那样通过 SQL DSL 将这些操作表达为 Spark 2.4。对不起,如果我不清楚

以上是关于Spark SQL DSL 中的窗口(固定、滑动等)和水印支持的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL 滑动窗口差分计算

Apache Spark - 处理临时 RDD 上的滑动窗口

Spark-Streaming之window滑动窗口应用

049 DSL语句

Spark:在流式查询中使用事件时间滑动窗口时出现问题

如何使用 Scala 在 Spark 中进行滑动窗口排名?