解决Hive异常:Column length too big for column PARAM_VALUE
异常介绍
用sqoop时出现中文乱码,就改了mysql的编码,顺便把hive关联的数据库删掉了,重新生成,之后出现
MetaException(message:An exception was thrown while adding/validating class(es) : Column length too big for column ‘PARAM_VALUE’ (max = 21845); use BLOB or TEXT instead
原因是编码问题,重新把hive与mysql的关联的数据库编码改成latin1就行了
这是因为mysql是使用utfmb4编码的,导致该字段在编码的时候内容过长(gbk使用双字节,utf使用三字节,)
show variables like ‘%char%’
修改格式
alter database hive character set latin1;
再次查看
show variables like ‘%char%’;
成功解决:
总结:这个是编码问题,需要将Hive数据库中的编码字符集,改为latin1