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作为对象锁的代码,选择以上版本的客户端版本即可

相关推荐
自强的小白3 小时前
MYbatis-plus(自定义sql)
java·sql·mybatis
Andreapiki3 小时前
数据分析师校招技术备考指南:SQL、Python、统计学、BI学习路径
sql·excel
星空3 小时前
sql查询修改
sql·金蝶
CarIise6 小时前
Spring Boot整合MyBatis与文件上传:从分层架构到文件上传下载实战
数据仓库·hive·hadoop
Andreapiki8 小时前
数字化审计校招技术备考指南:SQL、Python、BI、RPA学习路径
python·sql·rpa
计算机源码社9 小时前
【27届大数据毕设】基于Spark的TikTok短视频属性分享与互动比率可视化分析系统 基于机器学习的TikTok短视频认证属性与互动效能关联分析
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
ha_lydms18 小时前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
鼓掌MVP19 小时前
SQL 语句是一个典型的 DDL
sql·ddl
用户250458106091 天前
数据库索引为什么会失效?从执行计划理解 SQL 性能优化
sql·mysql
Andreapiki1 天前
风险审计校招技术栈拆解:SQL、Python、Power BI在2026届JD中的真实权重
数据库·python·sql