遇到这个问题大家可能都会想到去修改字符编码,出发思路是对的
问题 : 修改哪里字符编码
大家都知道hive建表的元数据会存储在Mysql数据库中,具体的字段相关信息存储在表COLUMNS_V2
我就会想到去改表COLUMNS_V2的字符编码为utf8,如下mysql命令行执行:
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8
结果建表时用到中文字段时还是会报错
这时我们去具体查看一下这张表具体内容
COLUMNS_V2表存储表对应的字段信息。
元数据表字段 | 说明 |
---|---|
CD_ID | 字段信息ID |
COMMENT | 字段注释 |
COLUMN_NAME | 字段名 |
TYPE_NAME | 字段类型 |
INTEGER_IDX | 字段顺序 |
从上表我们发现hive表字段名存储在表COLUMNS_V2的COLUMN_NAME这一列当中,这时我们去观察这个字段的字符集
可以看到字符集为latin2 我们把他改成utf-8保持 然后hive建表出现中文字段就不会报错了–