最近遇到一个问题就是我在hive表中插入中文,查询的时候显示的是乱码,因为以前都是用英文,没有注意到这个问题,现在发现了,抓耳挠腮,一步步的来吧:
(1)首先输入中文,要有中文输入法:
Applications -- System Tools -- Setting -- Regin & Language
点击左下角的 “+”号。
找到Chinese(China) 或者其它Chinese(..)
如果没有找到Chinese的选项,注意,下图红框处,可以点击的,然后在弹出的输入框中输入"chinese"
看到一个Chinese(Intelligent Pinyin)
就是这个
设置完毕后如图,增加了一个
看看屏幕右上角,是否多了一个中文选项。
使用shift切换中英文。或者直接在屏幕右上方选择中英文。
(2)改变CENTOS7 系统的中文字符集:
首先查看当前系统默认采用的字符集 命令:locale 或者echo $LANG,如果当初安装的时候已经选择了中文语言包的话,那么默认的就是UTF-8字符集
在此我要提醒,我原先的为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 的方式导入数据。最后验证
成功看到中文的数据。胜利!!!