Hive导出csv中文乱码

318 阅读1分钟

Hive导出csv中文乱码

hive里敲命令中文正常

 0: jdbc:hive2://xxx> select k1 from aaa limit 10;
+------+
| k1  |
+------+
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
| 公众号  |
+------+

shell直接敲命令正常

[xxx@xxx hive]$ hive --silent=false --showHeader=false --hiveconf hive.resultset.use.unique.column.names=false --hiveconf hive.tez.container.size=10240 --hiveconf tez.queue.name=a100 --outputformat=csv2 -e "
select k1 from aaa limit 10;" | sed 's/[\t]/,/g' | sed "s/'//g" > aaa.csv
[xxx@xxx hive]$ head aaa.csv
公众号
公众号
公众号
公众号
公众号
公众号
公众号
公众号
公众号
公众号

shell脚本导出到csv乱码

cat test.sh

    #!/bin/bash
    source ~/.bash_profile
    hive --silent=false --showHeader=false --hiveconf hive.resultset.use.unique.column.names=false --hiveconf hive.tez.container.size=10240 --hiveconf tez.queue.name=a100 --outputformat=csv2 -e "
select k1 from aaa limit 10;" | sed 's/[\t]/,/g' | sed "s/'//g" > aaa.csv

#执行
sh test.sh

#查看
head aaa.csv
???
???
???

排查解决

应该问题出在source ~/.bash_profile中 发现是LANG设置不正确 shell中开始设置解决

export LANG='en_US.UTF-8'