如何使用flatMapGroupsWithState进行有状态聚合?

时间:2017-12-17 05:57:29

标签: apache-spark apache-spark-2.0 spark-structured-streaming

我在应用value=''时收到以下错误消息。

  

线程“main”中的异常org.apache.spark.sql.AnalysisException:流数据框架/数据集上的聚合不支持更新模式下的flatMapGroupsWithState;

以下是我要做的事。

  • 阅读Kafka&解析它
  • 基于特定维度的群组
  • 为每个组提供UDAF并计算每个组的聚合。 Agg不返回KeyValueGroupDataSet。因此,基于aggFunction列
  • flatMapGroupsWithState应用于上一步输出到组
  • 使用groupByKey将此聚合合并到以前的流状态。

获取最后一步的错误消息。

此错误是否意味着我在数据集上应用flatMapGroupsWithState后无法应用flatMapGroupsWithState

1 个答案:

答案 0 :(得分:0)

  

此错误是否意味着我在数据集上应用flatMapGroupsWithState后无法应用agg(....)

不是真的。它说(突出我的)......

  流数据框架/数据集上的聚合不支持

更新模式下的flatMapGroupsWithState

这意味着您使用的默认输出模式update,而应该是completeappend,如Spark官方文档中所述{ {3}}(参见“使用flatMapGroupsWithState查询”查询类型)。

Output Modes