如何从JDBC读取表之前注册Hive UDF

时间:2018-10-23 06:22:12

标签: sql apache-spark jdbc hive user-defined-functions

我在配置单元中创建了一个UDF,例如:

create function mydb.level as 'com.my.udf.level' using jar 
'hdfs://hadoop01:8020/user/hive/udf_jars/dbtools-1.0-SNAPSHOT.jar';

现在,我想像这样使用spark从蜂巢表中读取数据:

spark.read().jdbc(myurl, "(select level(id) from my_tbl)t", prop);

失败。 如何在level() api中使用jdbc

1 个答案:

答案 0 :(得分:0)

将Hive UDF注册为永久功能时,它会与创建它的数据库绑定在一起,并且在调用UDF时也需要指明数据库。因此,在您的情况下,您需要按以下方式调用udf:

spark.read().jdbc(myurl, "(select mydb.level(id) from my_tbl)t", prop);