Hive表使用中文列名时遇到异常
在hive中建表,comment内容带中文
CREATE TABLE if not exists `stu`
(`name` string COMMENT '姓名' );
会出现异常,这个问题比较常见,在网上可以找到解决方法,直接在hive的元数据库中(一般使用mysql作为元数据存储)修改对应表的编码:
--修改字段注释字符集
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;
Hue中执行类似建表语句仍然异常
修复完hive元数据的编码问题,在hue上执行类似建表语句时,仍然无法通过;
通过查看hiveserver日志,可以发现hiveserver接收到的建表语句就有编码问题;
这个问题貌似在低版本hue中不会出现,但是在我使用的版本出现(使用的是4.10.0),不过这个issue早就有人解决了,https://github.com/cloudera/hue/issues/2840,而且在4.11.0也已经修复了。
hue 4.10.0版本:
hue 4.11.0版本:
解决方法:
使用浏览器访问下来链接,点击raw,将代码全部拷贝下来
https://github.com/cloudera/hue/blob/f748f04bcc12b38db6c1328859337e9c9554c7f2/apps/beeswax/gen-py/TCLIService/ttypes.py
进入hue安装节点,对原文件ttypes.py 进行备份
sudo mv /usr/lib/hue/apps/beeswax/gen-py/TCLIService/ttypes.py /usr/lib/hue/apps/beeswax/gen-py/TCLIService/ttypes.py.bak
重新创建ttypes.py文件,将刚刚链接复制的内容粘贴进来
sudo vim /usr/lib/hue/apps/beeswax/gen-py/TCLIService/ttypes.py
重启hue服务,就能够正常运行了
sudo systemctl stop hue.service
sudo systemctl start hue.service