Hive执行insert into语句报错
问题现象
使用MRS Hive执行一条SQL,有如下报错:
原因分析
- 查看HiveServer日志,在对应时间点,有如下的报错信息。
图2 HiveServer日志
- 在如上报错信息中未发现重要信息,但从堆栈中发现metadata字样,怀疑报错是和MetaStore有关。
图3 堆栈中metadata字样
- 查看MetaStore日志,发现如下报错。
图4 MetaStore日志
查看如上错误的上下文,确定是本次执行SQL的报错,在报错信息里面发现如下内容:
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(4000)
确认是该条SQL对表的操作,所有列的字节长度超过4000的限制,导致SQL执行失败,需要修改该限制。
处理步骤
- 以root用户登录集群任意一个Master节点,并执行su - omm命令切换到omm用户。
- 执行如下命令登录数据库。命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
gsql -p 20051 -d hivemeta -U username -W password
- 执行如下命令修改限制。
alter table PARTITION_PARAMS alter column PARAM_VALUE type varchar(6000);