文档首页/ MapReduce服务 MRS/ 故障排除/ 集群管理类/ 通过Hive beeline命令行执行插入命令的时候报错
更新时间:2023-11-10 GMT+08:00

通过Hive beeline命令行执行插入命令的时候报错

问题现象

在MRS Hive的beeline中执行insert into插入语句时系统报以下错误:

Mapping run in Tez on Hive transactional table fails when data volume is high with error: "org.apache.hadoop.hive.ql.lockmgr.LockException Reason: Transaction... already aborted, Hive SQL state [42000]."

原因分析

对于Join操作,由于集群配置不理想和Tez资源设置不合理导致该问题。

处理步骤

可以在beeline上设置配置参数进行解决。

  1. 设置以下属性以优化性能(建议在集群级别进行更改)

    • 设置hive.auto.convert.sortmerge.join = true
    • 设置hive.optimize.bucketmapjoin = true
    • 设置hive.optimize.bucketmapjoin.sortedmerge = true

  2. 更改以下内容以调整Tez的资源。

    • 设置hive.tez.container.size = {与YARN容器相同的大小}
    • 将hive.tez.container.size设置为与YARN容器大小“yarn.scheduler.minimum-allocation-mb”相同或更小的值(例如设置为二分之一或四分之一的值),但不要超过“yarn.scheduler.maximum-allocation-mb”参数值。