在我想查看一张表某个字段的具体含义时发现出现了乱码现象,这是由于在hive改成MySQL管理元数据后,该数据库使用的是Latin1编码而非utf8或者gbk,所有会导致乱码,由于hive和其他很多hadoop生态也有一定的关联,所以不能直接修改管理元数据库的默认字符集,但是我们可以修改里面表的某些字段的字符集。
第一步:在MySQL中指定管理hive元数据信息对应的数据库输入如下dml语句
ALTER TABLE COLUMNS_V2 MODIFY COLUMN COMMENT VARCHAr(256) CHARACTER SET utf8;
除了有修改表注释字符集的sql外,还带有分区,索引,视图等的sql。
#修改表注释字符集 ALTER TABLE TABLE_PARAMS MODIFY COLUMN PARAM_VALUE VARCHAR(20000) CHARACTER SET utf8; #修改分区参数,支持分区键用中文表示 ALTER TABLE PARTITION_PARAMS MODIFY COLUMN PARAM_VALUE VARCHAR(20000) CHARACTER SET utf8; ALTER TABLE PARTITION_KEYS MODIFY COLUMN PKEY_COMMENT VARCHAR(20000) CHARACTER SET utf8; #修改索引名注释,支持中文表示 ALTER TABLE INDEX_PARAMS MODIFY COLUMN PARAM_VALUE VARCHAR(4000) CHARACTER SET utf8; #修改视图,支持视图中文 ALTER TABLE TBLS MODIFY COLUMN VIEW_EXPANDED_TEXT MEDIUMTEXT CHARACTER SET utf8; ALTER TABLE TBLS MODIFY COLUMN VIEW_ORIGINAL_TEXT MEDIUMTEXT CHARACTER SET utf8;
第二步:修改hive中conf目录下的配置文件hive-site.xml
在原来的驱动中加上 &useUnicode=true&characterEncoding=UTF-8参数,然后重新进入hive客户端即可。
测试结果javax.jdo.option.ConnectionURL jdbc:mysql://hadoop002:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8
可以看到已经可以显示中文了,对后面的数据管理很有帮助。
注:该内容源于b站尚硅谷atlas课程内容



