[转] Hive创建表时添加中文注释后乱码问题

创建数据表时我们经验会添加一些中文注释到表里面方便识别最近在测试hive的时候发现添在Hive创建表时添加COMMENT时的中文注释就会出现乱码,如下:

思路:

1、查看存放Hive元数据信息的数据库字符集;是否因为字符集问题


                                            [转] Hive创建表时添加中文注释后乱码问题

可以看出,由于表使用的是默认的latin1字符集,所以中文显示不出来,应该使用utf8;

但是很奇怪,我整个Mysql都是使用utf8的字符集;所以这个与Mysql的配置无直接关系;但是可以通过修改Mysql上面的表默认字符集来解决,这个是不需要修改Hive配置的方法,快捷方便,不影响现有数据。


                                            [转] Hive创建表时添加中文注释后乱码问题

登陆Mysql数据库切换到Hive库:
use hive
修改以java面试题下两linux张表即可;

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;

再回到Hivemysql面试题查看表结构时就正linux创建文件常显示中文数据库原理及应用了;
如果你的表创建了分区的话就要再加一条语句:

alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

使用Mysql作为Hive的元数据存储方式时都要使用命令,初始化才可以使用:
./schematool -dbTyp乱码1乱码2乱码3e mysql -initSchema
所以通过上面这个命令,就知道既然要初始化,就等于先执行一下默认的SQL语句去建表。【不然hive中的表哪来?】
所以第二种方法就是修改hive默认的SQL语句来实现;

1、通过关键字查找文件
find /home/otouser/software/hive |xargs grep数据库系统概论第五版课后答案 -ri "l数据库查询语句atin1" -l
通过上面命令可以看javascript百炼成仙到很多文件:不过明确目录就在:
hiv乱码怎么恢复正常e/系统运维面试题及答案scripts/metastore/upgradlinux创建文件e/mysql

2、根据你使用的hive版本来修改:【修改一个文件即可】
进入目录
cd hive/scripts系统运维面试题及答案/metastore/upgrade/mysql
因为我使用的hive是2.0.0版本,所hiveos挖矿教程以就修改这个文件:hive-schema-2.0.0.mysql.sql
只需修java培训改以下几步:其实就是跟上面的一样;
修改字段注释字符集:

54行
COMMENT varchar(256) CHARACTER SET latin1 COLLATE latin1_bin系统运维工程师 DEFAULT NULL,
修改成:

COMMENT varchar(256) CHARACTER SET utf8 DEFAULT NULL,

系统运维工程师改表注释字符集:

565行
PARAM_VALUE varchlinux是什么操作系统ar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
数据库设计改成:
PARAM_VALUE varchar(4000) CHARACTER SET utf8 DEFAULT NUlinux重启命令LL,

修改分区注释字符集:

249行Hive
PKEY_CO系统运维工资一般多少MMENT varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,

修改成:
PKEY_COMMENT varchar数据库管理系统(4000) CHARACTER SET utf8 DEFAULT数据库系统概论第五版课后答案 NULL,
最后修改完后就执行上面的初始化元数据,再创建表时就可以看到正mysql密码忘记了怎么办常显示中文了。