0

我有一个用 java 编写的 Hive UDF,我正在尝试在 pyspark 2.0.0 中使用它。以下是步骤 1. 将 jar 文件复制到 EMR 2. 开始如下所示的 pyspark 作业

pyspark --jars ip-udf-0.0.1-SNAPSHOT-jar-with-dependencies-latest.jar

3.使用以下代码访问UDF

from pyspark.sql import SparkSession
from pyspark.sql import HiveContext
sc = spark.sparkContext
sqlContext = HiveContext(sc)
sqlContext.sql("create temporary function ip_map as 'com.mediaiq.hive.IPMappingUDF'")

我收到以下错误:

py4j.protocol.Py4JJavaError: 调用 o43.sql 时出错。: java.lang.NoSuchMethodError: org.apache.hadoop.hive.conf.HiveConf.getTimeVar(Lorg/apache/hadoop/hive/conf/HiveConf$ConfVars;Ljava/util/concurrent/TimeUnit;)J 在 org.apache。 hadoop.hive.metastore.RetryingMetaStoreClient.(RetryingMetaStoreClient.java:76) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy (RetryingMetaStoreClient.java:104) 在 org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:98) 在 org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2453 ) 在 org.apache.hadoop.hive.ql.session 的 org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2465)。

4

1 回答 1

0

您可能使用不同版本的 Hive 构建了 UDF。请务必在pom.xml用于构建包含 UDF 的 jar 中指定相同版本的 Hive。例如,请参阅这个先前的答案

于 2017-01-09T23:17:36.107 回答