文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Hive/ Hive执行insert into语句报错
更新时间:2023-12-22 GMT+08:00

Hive执行insert into语句报错

问题现象

使用MRS Hive执行一条SQL,有如下报错:

图1 使用MRS Hive执行SQL报错

原因分析

  1. 查看HiveServer日志,在对应时间点,有如下的报错信息。
    图2 HiveServer日志
  2. 在如上报错信息中未发现重要信息,但从堆栈中发现metadata字样,怀疑报错是和MetaStore有关。
    图3 堆栈中metadata字样
  3. 查看MetaStore日志,发现如下报错。
    图4 MetaStore日志

    查看如上错误的上下文,确定是本次执行SQL的报错,在报错信息里面发现如下内容:

    Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(4000)

    确认是该条SQL对表的操作,所有列的字节长度超过4000的限制,导致SQL执行失败,需要修改该限制。

处理步骤

  1. root用户登录集群任意一个Master节点,并执行su - omm命令切换到omm用户。
  2. 执行如下命令登录数据库。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。

    gsql -p 20051 -d hivemeta -U username -W password

  3. 执行如下命令修改限制。

    alter table PARTITION_PARAMS alter column PARAM_VALUE type varchar(6000);