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-exec
jar,启用了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列制作直方图