【问题标题】:Hive 3.1.2 UDAFs not working in Spark 3.0.0Hive 3.1.2 UDAF 在 Spark 3.0.0 中不起作用
【发布时间】:2021-01-03 09:59:40
【问题描述】:

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.2 星火版本:3.0.0

如果有人在 Spark 3.0.0 中注册 Hive UDAF 时有一个适用于他们的简单 sn-p,那也将非常有用

【问题讨论】:

  • 您能否分享一个示例代码 sn-p 来说明您正在尝试做的事情?
  • 我尝试在 Spark 3.0.0 上运行以下代码 sn-p 并且没有任何错误。 codepile.net/pile/OQK1024M。您是否正在尝试做类似的事情,或者您的问题完全是关于其他事情的,请相应地更新您的问题。

标签: java apache-spark hive hiveql user-defined-functions


【解决方案1】:

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

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

实现“histogram_numeric”的 hive 类在那里,但它不符合 spark 的 JavaUADF 接口。

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

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

Making histogram with Spark DataFrame column

【讨论】:

  • selectExpr 给了我同样的错误。我不知道 Spark 有它自己的直方图函数,我认为这将达到我的目的
猜你喜欢
  • 1970-01-01
  • 2018-02-19
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
相关资源
最近更新 更多