首页 > 解决方案 > 如何用 SQL for Spark SQL 表达时间窗函数

问题描述

我有一个简单DataFrame的,其架构是:

word: string
process_time: timestamp

我按当时的时间窗口分组并依靠分组DataFrame

val windowedCount = wordsDs
  .groupBy(
    window($"processing_time", "15 seconds")
  ).count()

如何使用 Spark SQL 的语法将此代码移植到 SQL?

标签: apache-spark

解决方案


这几乎是一对一的翻译:

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""")

推荐阅读