执行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");
阅读 19.9k
1 个回答

这是一个社区bug:
HIVE-11837

另外,社区对中文的支持比较弱,尽量避免在SQL语句中写中文,实际数据有中文没关系。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题