【发布时间】:2018-10-02 15:16:00
【问题描述】:
在 PySpark 中,我正在尝试定义一个自定义聚合器正在累积状态。在 Spark 2.3 中可以吗?
AFAIK,现在可以通过使用 PandasUDFType.GROUPED_AGG 关键字调用 pandas_udf,从 Spark 2.3 开始在 PySpark 中定义自定义 UDAF(参见 How to define and use a User-Defined Aggregate Function in Spark SQL?)。但是,鉴于它只是将函数作为参数,我认为在聚合期间不可能携带状态。
从 Scala 中,我看到可以通过扩展 UserDefinedAggregateFunction 或 org.apache.spark.sql.expressions.Aggregator 来进行有状态聚合,但是我只能在 python 端做类似的事情吗?
【问题讨论】:
-
我对 python 语法不是很熟悉,pyspark 中没有 flatMapGroupWithState 吗?
-
好像不是!
-
你想要python中的一切吗?
-
到目前为止这是目标:)
-
更深入地研究这一点,似乎 2.3 中的新功能是能够从 python 调用 scala/java UDAF。 SPARK-19439
标签: scala apache-spark pyspark apache-spark-sql