hive sql无法停止

排查流程

hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的

其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

同时,通过JDK动态代理为其织入了synchronized同步机制:其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

与此同时,原运行Hive的线程也在循环中通过客户端实例来获取该Hive SQL运行状态

而synchronized锁是非公平的,因此停止Hive线程客户端可能一直无法获取对象锁,从而无法进入停止流程。因此修改HiveStatement的JDK动态代理逻辑,改为使用ReentrantLock,并将其设置为公平锁,从而客户端获取锁序列为公平的,从而让停止线程能正常获取客户端实例锁进行操作。

解决方案

按照以上思路查询源码,在高版本和低版本的客户端中都有使用ReentrantLock作为对象锁的代码,选择以上版本的客户端版本即可

相关推荐
零一科技8 小时前
windows安装VMware Workstation Pro
hadoop
yumgpkpm13 小时前
2026软件:白嫖,开源,外包,招标,晚进场(2025年下半年),数科,AI...中国的企业软件产业出路
大数据·人工智能·hadoop·算法·kafka·开源·cloudera
山岚的运维笔记13 小时前
SQL Server笔记 -- 第15章:INSERT INTO
java·数据库·笔记·sql·microsoft·sqlserver
Wasim40414 小时前
【渗透测试】SQL注入
网络·数据库·sql
kylezhao201916 小时前
深入浅出地理解 C# WPF 中的属性
hadoop·c#·wpf
北方的银狐-Zero17 小时前
记录第一次部署银河麒麟环境Apache Doris单机部署
sql·database·doris
Apple_羊先森17 小时前
ORACLE数据库巡检SQL脚本--15、表空间的运行状态
数据库·sql·oracle
迎仔17 小时前
01-Hadoop 核心三剑客通俗指南:从“单机搬砖”到“包工队”
大数据·hadoop·分布式
星沙丘秋19 小时前
Kettle9入门、使用经验与5个问题
数据库·sql·etl
山岚的运维笔记19 小时前
SQL Server笔记 -- 第16章:MERGE
java·笔记·sql·microsoft·sqlserver