hive 3.1.2 udafs在spark 3.0.0中不工作

scyqe7ek  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(556)

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 当我尝试在sparksql中使用hive中的直方图时,出现了上述错误。
我已经包括了相关的 hive-exec jar,启用了hive支持,我开始怀疑现在是否不支持这个。
配置单元版本:3.1.2 spark版本:3.0.0
如果有人在spark3.0.0中注册hiveudafs时有一个简单的代码片段对他们有用,那也会非常有用

lskq00tm

lskq00tm1#

我试图通过hivectx.udf.registerjavaudaf注册配置单元uadf,但没有成功。

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

实现“histogram\u numeric”的hive类就在那里,但它不符合spark的javauadf接口。
但我发现dataframe的selectexpr的代码可以工作。我不知道为什么。

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

用sparkDataframe列生成直方图

相关问题