我在DataFrame中有3列: - [time:TimeStamp,col1:Double,col2:Double] 我想执行以下操作:
dataFrame.withWatermark("time", "10 seconds")
.groupBy(window(col("time"),"10 seconds","1 second"))
.agg(mean("col1") with window of 10 seconds,max("col") with window of 5 seconds)`
答案 0 :(得分:2)
尚不支持单个流式查询中不同密钥集(不同窗口=不同分组密钥)的多个聚合。您必须运行2个不同的查询。
答案 1 :(得分:-1)
包含多个聚合的动态规则(Avg,Max,..等Spark Spark Supported)在2.2之前无法应用于Spark Structured Streaming。 即使打破查询并加入它们,Spark也会将其视为多个聚合并抛出异常。
逻辑计划示例: Aggr1:聚合 [EventTime#29,CategoryName#15],[EventTime#29,CategoryName#15, sum (ItemValue#10)AS sum(ItemValue)#64]
Aggr2:聚合 [EventTime#84,CategoryName#105],[EventTime#84,CategoryName#105, avg (ItemValue#100)AS avg(ItemValue) #78]
org.apache.spark.sql.AnalysisException:流式DataFrames / Datasets不支持多个流式聚合;;