执行Hive的`SHOW CREATE TABLE`语句,结果有中文乱码
这个问题已经困扰了我很多天了,一直在网上找不到答案。具体问题是这样的:
我希望得到hive中表的建表语句,所以在hive cli里面执行show create table
语句,但是发现得到的结果中,中文是乱码,而英文不是乱码。类似这样:
hive> show create table table_test;
OK
CREATE TABLE `table_test`(
`fid` bigint COMMENT '��(q(UID)',
`fname` string COMMENT '
�',
`fcompanyid` bigint COMMENT 'l�
`fsn` string COMMENT '�K�:SN/IMEI',
(...etc.)
Time taken: 0.321 seconds, Fetched: 45 row(s)
后面我查了一些资料,发现与hive的metastore的MySQL编码有关,所以我将MySQL中的相关编码从latin1更改为UTF-8。这下,在Hive中执行DESC table
的语句是可以正确的显示中文的,但是SHOW CREATE TABLE
语句仍然还是这样的乱码。
我尝试在Java中取得这些结果并用如下的语句转码,但是转完的文字更不对了……
String decodedStr = new String(rawStr.getBytes("ISO-8859-1"), "UTF-8");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个社区bug:
HIVE-11837
另外,社区对中文的支持比较弱,尽量避免在SQL语句中写中文,实际数据有中文没关系。