centos 7 hive中中文显示乱码

本文介绍了解决Hive表中插入中文显示为乱码的问题。通过调整系统语言设置、字符集配置,并指定正确的文件存储格式为txt,最终成功在Hive中正确显示中文数据。

最近遇到一个问题就是我在hive表中插入中文,查询的时候显示的是乱码,因为以前都是用英文,没有注意到这个问题,现在发现了,抓耳挠腮,一步步的来吧:

(1)首先输入中文,要有中文输入法

Applications -- System Tools -- Setting -- Regin & Language


 点击左下角的 “+”号。

 找到Chinese(China) 或者其它Chinese(..)


 

如果没有找到Chinese的选项,注意,下图红框处,可以点击的,然后在弹出的输入框中输入"chinese"



 


 看到一个Chinese(Intelligent Pinyin)

 就是这个



 设置完毕后如图,增加了一个



 看看屏幕右上角,是否多了一个中文选项。

 使用shift切换中英文。或者直接在屏幕右上方选择中英文。

(2)改变CENTOS7 系统的中文字符集:

首先查看当前系统默认采用的字符集 命令:locale 或者echo $LANG,如果当初安装的时候已经选择了中文语言包的话,那么默认的就是UTF-8字符集

[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[root@localhost ~]# echo $LANG
zh_CN.UTF-8

 

SecureCRT的修改,选项→会话选项,将外观中的字符编码集修改为UTF-8即可,其他终端程序同理

 

如果在第一步中字符集显示出来是其他的,那么需要先安装中文包,命令:yum -y groupinstall chinese-support

安装后之后,修改字符编码配置,命令:vim /etc/locale.conf 将LANG="XXXX" 改为LANG="zh_CN.UTF-8",注意Centos7的字符集配置文件为/etc/locale.conf,如果是7之前的版本,应修改/etc/sysconfig/i18n,修改完之后记得reboot


在此我要提醒,我原先的为en_US.UTF-8,改为zh_CN.UTF-8hive查询的还是乱码,然后在虚机里面的终端都打不开了,感觉好坑,还是老老实实的原回去。

(3)自己愁闷了半天,最后在反复查看原先hive中的表的数据的时候,竟然发现有些表可以看到中文的,这个让我有点惊喜,然后命令:hadoop fs -du s /user/hive/warehouse/*,查看所有文件的格式,发现那些显示中文的的表的H数据存储文件格式位txt,这个让我灵光一闪,创建hive表的时候,指定好文件存储格式位txtfile,然后把数据让在txt文件里面,用load data local inpath 的方式导入数据。最后验证


成功看到中文的数据。胜利!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河南骏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值