Hive 3.1.2 UDAF 在 Spark 3.0.0 中不起作用

Hive 3.1.2 UDAFs not working in Spark 3.0.0

pyspark.sql.utils.AnalysisException: No handler for UDF/UDAF/UDTF 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFHistogramNumeric': java.lang.NoSuchMethodException: org.apache.hadoop.hive.ql.udf.generic.SimpleGenericUDAFParameterInfo.<init>([Lorg.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;, boolean, boolean); line 4 pos 29

当我尝试在 Spark SQL 中使用 Hive 中的 histogram_numeric 时出现上述错误 SQL。

我已经包含了相关的 hive-exec jar,启用了配置单元支持,我开始怀疑目前是否不支持它。

蜂巢版本:3.1.2 星火版本:3.0.0

如果有人在 Spark 3.0.0 中注册 Hive UDAF 时有一个适用于他们的简单代码段,那也会非常有用

我尝试通过 hiveCtx.udf.registerJavaUDAF 注册 hive uadf,但没有成功。

hiveCtx.udf.registerJavaUDAF("histogram_numeric", "org.apache.hadoop.hive.ql.udf.generic.GenericUDAFHistogramNumeric")

那里有实现“histogram_numeric”的配置单元 class,但它不符合 spark 的 JavaUADF 接口。

但我发现数据框的 selectExpr 代码有效。不知道为什么。

users_spark_df.selectExpr('histogram_numeric(age, 2)')

Making histogram with Spark DataFrame column