cdh hive 表 metastore配置的位置 hive建表注释comment中文乱码

问题:
最近建hive表引用了mysql的建表语句:

SELECT 'CREATE TABLE IF NOT EXISTS','要建的hive表名','(','',''
UNION ALL
SELECT CONCAT('`',column_name,'`') colname,
       CASE WHEN NUMERIC_PRECISION IS NOT NULL AND (data_type='decimal' OR data_type='numeric' OR data_type = 'money') THEN
                  'decimal(16,2) ,'
            WHEN data_type = 'datetime' THEN 
                'timestamp'
	    WHEN data_type = 'tinyint' THEN  
                'int'  		
            ELSE
                'string'
       END AS data_type,
       ' comment ',
        CASE
    WHEN COLUMN_COMMENT IS NULL THEN
        CONCAT('\'',COLUMN_NAME,'\'')
    ELSE
        CONCAT('\'',REPLACE(COLUMN_COMMENT,';',','),'\'')
    END AS COLUMN_COMMENT,
       ' ,' AS splitCharacter
 FROM information_schema.columns
WHERE table_name = 'mysql表名' AND table_schema='mysql库名'
UNION ALL
SELECT ')','comment',CONCAT('\'',TABLE_COMMENT,'\''),'stored as orc','' FROM information_schema.tables WHERE table_name = 'mysql表名' AND table_schema='mysql库名'

在mysql中查询后点击右边显示成下面的样子 贴过去hive建表即可。ps去掉最后那个,逗号。。。。不然语法错误。
在这里插入图片描述
然后再hive建表后,发现这些注释都是???,无法识别了。
解决:
修改metastore的存储编码格式。
那么hive的metastore存在哪儿呢,可以去hive-site.xml查找,但是我找到的每台机器都是
hive.metastore.uris
thrift://hadoop-test-10-10-6-102:9083,thrift://hadoop-test-10-10-6-105:9083
不见实际的hive metastore服务器位置,其实直接去cm上看就能看到:
在这里插入图片描述
在这里插入图片描述
在登录这台机的mysql,进入metastore存储的库,如上图,我的是hive库,所以use hive;
查看存放Hive元数据信息的数据库表字符集:show create table COLUMNS_V2\G;然后会看到表使用的是默认的latin1字符集,所以中文显示不出来,应该使用utf8;

所以,修改以下两张表即可;
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;

再回到Hive查看表结构时就正常显示中文了;
如果hive表创建了分区的话就要再加一条语句:
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值