news 2026/11/3 1:19:25

【Hive 运维】JDBC使用Hive UDF:Hive UDF打通hiveserver2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Hive 运维】JDBC使用Hive UDF:Hive UDF打通hiveserver2

文章目录

  • 一. 问题描述与方案分析
    • 1. 问题描述
    • 2. 方案分析
    • 3. 方案优化
      • 3.1. 通过文件系统,来保证jar包的节点一致性
      • 3.2. hiveserver2 session的更新优化
  • 二. 实现与操作

一. 问题描述与方案分析

1. 问题描述

用户需要创建永久的Hive UDF供JDBC连接使用,一开始先通过hive client的方式注册(输入hive,进入hive交互界面)发现,udf存在,但是通过jdbc连接的时候无法找到此函数。

如下相关操作:

-- 1. 上传包到文件系统中hadoop fs-put/home/hadoop/lib/hive-1.0-SNAPSHOT.jar/lib/-- 创建永久函数-- a.进入hive终端hive-- b. 注册hive永久函数-- 注意:函数是绑定到某个库下的,此时是绑定到default库下。CREATEFUNCTIONsayhelloAS'com.gao.bigdata.HelloUDF'USINGJAR'hdfs://hadoop002:9000/lib/hive-1.0-SNAPSHOT.jar';-- 查看函数列表showfunctionslike'*sayhello*';

2. 方案分析

通过重启hiveserver2之后通过jdbc连接找到了此函数。

相关参考见: [cloudera] Error executing a hive UDF through jbdc

从上截图可以知道有两个要点

  1. 要将所有的jar都放到各个节点的hiveserver2下
  2. 重启所有的hiveserver

通过操作之后发现方案可行

3. 方案优化

上面的解决方案虽然可行,但运维成本较高,现进行优化。

3.1. 通过文件系统,来保证jar包的节点一致性

首先将所有的jar都放到各个hiveserver2节点下的原因是add jar使用了本地路径,导致每个jdbc连接hiveserver2的时候都是从本地找jar。我们可以把jar放到hdfs上,这样add jar每个hiveserver2都能够从远端拉去jar,这就是文件的状态一致性。

3.2. hiveserver2 session的更新优化

其次要重启所有的hiveserver2,这也造成一定的运维问题,甚至会影响正在运行任务的jdbc连接。
先看下hive架构图:

  • 如果我们通过hive终端添加UDF函数,那Hiveserver2中的session就不会同步到,需要你重启才能加载最新的Hive session。

  • 如上架构图我们通过beeline或者jdbc的方式注册,添加的UDF函数就直接会存在于HiveServer2中,这样就不用重启。

  • 但另外需要注意的是,JDBC连接不同的Hiveserver2(这里我们称之为H2)时,因为只在H1上注册了UDF,所以H2需要重启,或需要再通过JDBC连接测试一遍。

到这里我们就得到了较为简化后的执行方案,具体操作见下节。

二. 实现与操作

通过beeline方式登录hive

beeline-u jdbc:hive2://hiveserver2-hostname:10000 -n user -p password

udf绑定到某个库下

usedatabaseA

添加udf

ADDJAR hdfs:///xxx/hive-demo-1.0-SNAPSHOT.jar;CREATEFUNCTIONto_upper_xxxAS'com.gao.udf.UpperCaseUDF'USINGJAR'hdfs:///xxx/hive-demo-1.0-SNAPSHOT.jar';

测试:
上述创建的udf是绑定到databaseA库下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 1:17:40

LTX-LoRAs视频修复实战:从基础到高级的完整教程

LTX-LoRAs视频修复实战:从基础到高级的完整教程 LTX-LoRAs是基于Lightricks/LTX-2.3模型开发的视频修复LoRA集合,提供从基础修复到高级编辑的完整解决方案。本教程将帮助新手快速掌握视频修复技术,通过简单操作实现专业级视频编辑效果。 为什…

作者头像 李华
网站建设 2026/11/3 1:16:14

【python基础】练习题答案【2】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华