sql - 如何在从 jdbc 读取表之前注册 hive udf
问题描述
我在 hive 中创建了一个 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 从 hive 表中读取数据,如下所示:
spark.read().jdbc(myurl, "(select level(id) from my_tbl)t", prop);
它失败了。我如何level()
在jdbc
api中使用。
解决方案
当您将 Hive UDF 注册为永久函数时,它与创建它的数据库相关联,您还需要在调用 UDF 时指明数据库。因此,在您的情况下,您需要按如下方式调用 udf:
spark.read().jdbc(myurl, "(select mydb.level(id) from my_tbl)t", prop);
推荐阅读
- javascript - 如何从右到左匹配 React Router 路径
- string - 删除 nginx 配置变量上的前导零
- python-3.x - 从 pdf 文件中提取文本以使用 Gensim 构建模型
- jenkins - using Jenkins pipelines, call a parametrized job from another job
- build - Install gstreamer using cerbero
- parsing - parse(Float64,trip)--错误:无法将行程解析为 Float64
- matlab - matlab中具有叉积的复杂船体脚本
- github - 如何让 GitHub 将 Java 显示为存储库上的编程语言?
- excel - Delete Row if populated with blanks and zeros within a range
- c++ - C++ Metaprogramming: Generating a byte sequence based on type/value input?