报错背景

hive创建数据库时添加中文备注信息报错。

命令:CREATE DATABASE IF NOT EXISTS hive_ods_db COMMENT 'Hive ODS层数据库';

报错现象

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown flushing changes to datastore)

报错原因

MySQL的存储注释信息的列的字符集有问题,需要修改。

报错解决

在MySQL终端执行如下命令:

-- 修改数据库编码
set  character_set_database =latin1;
-- 切换到hive数据库
use hive-metadata;
-- 修改字段注释字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
-- 修改表注释字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
-- 修改分区注释字符集
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
-- 修改数据库注释字符集
alter table DBS modify column `DESC` varchar(4000) character set utf8;