张杰部落格
博客信息

Hive shell终端查询条件乱码的问题解决

发布时间:『 2020-02-24 16:49』  博客类别:Hadoop/Spark  阅读(474) 评论(0)

在服务上打开Hive Shell客户端,经常需要输入中文条件,但是每次都遇上输入中文乱码的问题。这个时候我想到了一个办法,那就是将中文URL编码,然后再解码作为查询条件的值。

例如:我需要查询公司名称为“饭店”的记录

原本查询SQL应该如下:

select * from company where company_name like '%饭店%';

但是在shell上可能会乱码,会让你输入不成功。

解决办法:

将“饭店”URL编码为“%E9%A5%AD%E5%BA%97”,然后再用Hive的反射函数解码:

reflect('java.net.URLDecoder', 'decode','%E9%A5%AD%E5%BA%97' , "UTF-8")

于是查询条件变为:

select * from company where company_name like concat('%',reflect('java.net.URLDecoder', 'decode','%E9%A5%AD%E5%BA%97', "UTF-8"),'%');

到此问题很清晰就解决了。

网上还有一种办法:

设置 /home/用户/.profile 文件中LANG=en_US.UTF-8即可

这种办法没尝试过,但本文的方法能解决所有情况下的乱码问题。


关键字:   hive乱码  
评论信息
暂无评论
发表评论
验证码: 
Powered by IMZHANGJIE.CN Copyright © 2015-2022 粤ICP备14056181号