执行Hive的`SHOW CREATE TABLE`语句,结果有中文乱码

发布于 2022-08-29 22:35:14 字数 777 浏览 17 评论 0

这个问题已经困扰了我很多天了,一直在网上找不到答案。具体问题是这样的:

我希望得到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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2022-09-05 22:35:14

这是一个社区bug:
HIVE-11837

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文