菜鸟笔记
提升您的技术认知

hive中文乱码解决方法-ag真人游戏

阅读 : 338

当我们创建hive表的时候,使用中文注释的话,通过desc查看表的信息时,会发现表的注释全是问号

这是因为我们hive配置表的元数据放到mysql中存储,mysql中默认表被创建的时候用的是默认的字符集(latin1),所以会出现中文乱码
ag真人游戏的解决方案:
(1)在hive元数据存储的mysql数据库(metastore)中,执行以下sql:

#修改字段注释字符集
alter table columns_v2 modify column comment varchar(256) character set utf8;
#修改表注释字符集
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;

(2)修改hive-site.xml中hive读取元数据的编码(注意原先是否配置过)


    javax.jdo.option.connectionurl
    jdbc:mysql://hadoop102:3306/metastore?usessl=false&useunicode=true&characterencoding=utf-8

注意的是,之前创建的表的元数据已经损坏了,所以无法恢复中文乱码,只能重新创建表

网站地图