0. Hive on Spark And CDH在yarn上运行程序乱码

Hive on Spark

-- hive默认引擎是mr,执行job时可以看到上面日志,HIVE2后已经建议使用tez/spark计算引擎。
-- set hive.execution.engine=mr;
SET hive.execution.engine=spark;
select count(*) from t_bike_ca_trip_etl where year='2017' and month='01'; 

CDH在yarn上运行程序乱码

1. linux的环境变量设置字符集
vi /etc/profile
export LANG=zh_CN.UTF-8

2. 修改mapreduce的环境变量
# hadoop-env.sh
# export HADOOP_OPTS="-server -Dfile.encoding=utf-8 -Duser.language=zh"

CM界面yarn配置(mapred-site.xml)搜索
mapreduce.map.java.opts
-Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh

mapreduce.reduce.java.opts
-Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh

yarn.app.mapreduce.am.command-opts
-Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh

3. 修改spark字符集
CM界面spark配置搜索spark-default.conf,添加:
spark.driver.extraJavaOptions=-Dfile.encoding=utf-8
spark.executor.extraJavaOptions=-Dfile.encoding=utf-8

4. 重启服务