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

相关推荐

  1. jenkins job无法停止

    2024-03-10 02:54:02       56 阅读
  2. mac上系统偏好里无法停止mysql

    2024-03-10 02:54:02       41 阅读
  3. HiveQL详解

    2024-03-10 02:54:02       34 阅读
  4. ✨✨✨HiveSQL

    2024-03-10 02:54:02       33 阅读
  5. HiveSQL基础Day03

    2024-03-10 02:54:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 02:54:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 02:54:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 02:54:02       87 阅读
  4. Python语言-面向对象

    2024-03-10 02:54:02       96 阅读

热门阅读

  1. 精读《深度学习 - 函数式之美》

    2024-03-10 02:54:02       53 阅读
  2. ubuntu22.04 zip的安装及其压缩文件

    2024-03-10 02:54:02       40 阅读
  3. 深入了解C#中的PropertyInfo类

    2024-03-10 02:54:02       44 阅读
  4. 记一次kafka消息积压的排查

    2024-03-10 02:54:02       48 阅读
  5. P2386 放苹果

    2024-03-10 02:54:02       43 阅读
  6. python安装graph-tool 和 torch_geometric,pytorch总结:

    2024-03-10 02:54:02       53 阅读