我们正在使用结构化流技术来对实时数据进行汇总。我正在创建一个可配置的Spark作业,该作业具有配置,并使用它在翻滚窗口中对行进行分组并执行聚合。我知道如何通过功能界面来做到这一点。
这是使用功能接口的代码片段
var valStream = sparkSession.sql(sparkSession.sql(config.aggSelect)) //<- 1
.withWatermark("eventTime", "15 minutes") //<- 2
.groupBy(window($"eventTime", "1 minute"), $"aggCol1", $"aggCol2") //<- 3
.agg(count($"aggCol2").as("myAgg2Count"))
第1行执行来自配置的SQL字符串。我想将第2行和第3行移到SQL语法中,以便在配置中指定分组和聚合。
外面有人知道如何在Spark SQL中指定吗?
答案 0 :(得分:1)
withWatermark
没有相应的SQL语法。您必须使用数据框API。
对于聚合,您可以执行类似的操作
select count(aggcol2) as myAgg2Count
from xxx
group by window(eventTime, "1 minute"), aggCo1, aggCol2