apache-spark - 如何用 SQL for Spark SQL 表达时间窗函数
问题描述
我有一个简单DataFrame
的,其架构是:
word: string
process_time: timestamp
我按当时的时间窗口分组并依靠分组DataFrame
:
val windowedCount = wordsDs
.groupBy(
window($"processing_time", "15 seconds")
).count()
如何使用 Spark SQL 的语法将此代码移植到 SQL?
解决方案
这几乎是一对一的翻译:
spark.sql("""SELECT window(process_time, "15 seconds"), count(*)
FROM wordDs
GROUP BY window(process_time, "15 seconds")""")
或者:
spark.sql("""WITH tmp AS(SELECT window(process_time, "15 seconds") w FROM wordDs)
SELECT w, count(*) FROM tmp GROUP BY w""")
推荐阅读
- docker - 当我在堆栈上的限制少于 256 时,为什么会发生 docker IP 耗尽?
- multidimensional-array - 为什么推力::device_vector 似乎没有机会保存指向其他 device_vectors 的原始指针?
- azure - Azure Blob 触发功能仅在某些 Blob 上触发
- node.js - 如何将 Elasticsearch 与 Sails 集成
- reactjs - 递归地克隆和修改 React 中的子组件 - 包括其他组件的子组件
- java - 使用正则表达式需要去除特定的特殊字符
- java - 如何从firebase android检索子数据
- lua - Garrys Mod Lua 问题(检查相等并打印)
- javascript - 映射数组返回未定义的值
- java - 使用 Java SDK,如何在 Azure 存储文件服务中的文件上设置元数据?