【hive】远程remote debug hive的方法,用于hive监听器/钩子编写

背景

写hive监听器时候需要拿到hive对象但hive是在集群linux主机上运行的。通过jdbc提交的sql具体执行过程不会再idea中运行。所以如果需要拿到hive对象有可能存在两个思路:

(1)想办法写个钩子或者监听器,将需要的内容写成json字符串,在复制出来,在IDE中反序列化,然后回放。这个过程有个缺陷,如org.apache.hadoop.hive.ql.QueryPlan虽然继承了java.io.Serializable但是实际使用中需要内部各个成员变量都支持序列化,java没法做到编译检查。所以不可行。

(2)使用remote debug功能,可能社区版Community的IDEA没有此功能。

使用方法

先help看下:

hiveserver2启动方法:

bash 复制代码
# 默认开启本地8000端口号,日志里边有显示
$HIVE_HOME/bin/hive --debug --service hiveserver2 &

此时需要在IDE(这里以IDEA举例说明)连接此端口,hiveserver2才会继续运行,否则将一直阻塞(docker里测试不生效不知道为啥)

如果集群有多个hiveserver2,选择一个hiveserver2即可。idea连接指定好host即可。

IDEA连接了远程端口后,远端的hiveserver2就会继续运行了。

以下以钩子为例:org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext

在hive中执行大多数操作都会触发此断点。

如:show tables; use database ...; insert into table ...;

当然断点也可以打到hive自己的类上。

相关推荐
juniperhan20 小时前
Flink 系列第24篇:Flink SQL 集成维度表指南:存储选型、参数调优与实战避坑
大数据·数据仓库·sql·flink
隐于花海,等待花开20 小时前
41.ABS / POW / SQRT 函数深度解析
大数据·hive
RestCloud1 天前
ETL数据质量保障:如何通过优化提升数据准确性?
数据仓库·etl·数据处理·数据传输·数据同步·数据集成平台
隐于花海,等待花开2 天前
40.RAND 函数深度解析
hive·hadoop
2501_927283582 天前
荣联汇智助力天津艺虹打造“软硬一体”智慧工厂,全流程自动化引领印刷包装行业数智变革
大数据·运维·数据仓库·人工智能·低代码·自动化
孤雪心殇3 天前
快速上手数仓基础知识
数据仓库·hive·spark
渣渣盟3 天前
数据仓库 vs 数据湖 vs 湖仓一体:架构演进与选型
数据仓库·架构
隐于花海,等待花开3 天前
39.ROUND / FLOOR / CEIL 函数深度解析
hive·hadoop
juniperhan3 天前
Flink 系列第22篇:Flink SQL 参数配置与性能调优指南:从 Checkpoint 到聚合优化
大数据·数据仓库·分布式·sql·flink
juniperhan3 天前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink