hive修改字符编码
注意项1:如果你的一些注释已经写入进去了,并且呈现出来的就是乱码了,而且按照我的方法没有效果,建议重新加一遍注释,因为有的时候可能不奏效。
注意项2:如果是mysql8的用户,需要注意一下msyql8用的编码是utf8还是utf8mb4,一定要检查好了,再去修改。utf8mb4的generic_ci 这类型的是可以和utf8做兼容的,如果不是,各位要查清楚mysql的各个表的编码是否都是一样的。
Hive元数据库的字符集默认为Latin1,由于其不支持中文字符,故若建表语句中包含中文注释,会出现乱码现象。
如需解决乱码问题,须做以下修改。
1)修改Hive元数据库中存储注释的字段的字符集为utf-8(如果mysql表是utf8mb4,建议调整)
如果mysql版本升级,并且表类型是utf8mb4的general_ci,这种的理论可以兼容utf8的编码,不过建议各位用8版本了,就最好遵循8版本的一些规则。
登录mysql
mysql -uroot -p
use metastore;
(1)字段注释
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
(2)表注释
alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;
2)修改hive中的hive-site.xml中JDBC URL,如下
添加&useUnicode=true&characterEncoding=UTF-8
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>