Hive 3.1.2 UDAF在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时,出现了上述错误。

我已经包含了相关的hive-execjar,启用了hive支持,我开始怀疑目前是否不支持它。

Hive版本:3.1.2Spark版本: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")

实现";数值直方图";有,但它不符合spark的JavaUADF接口。

但我发现使用dataframe的selectExpr的代码是有效的。我不知道为什么。

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

用Spark DataFrame列制作直方图

最新更新