初衷
基于spark引擎的hive,在hive客户端中提交查询sql后,在yarn管理界面,或者8088界面,看到的作业名称都是"hive on spark",如下图所示,如果有多个脚本同时在运行时,就不好分辨。
修改方式
mapreduce 引擎
yarn1
set mapred.job.name=xxx;
yarn2
set mapreduce.job.name=xxx;
spark 引擎
set spark.app.name=xxx;
需要注意的是,在同一个会话中,这个参数只能生效一次
即第一次设置了 set spark.app.name=xxx;执行了一个查询后,在同个会话中,再设置 set spark.app.name=yyy;再执行一个查询语句。这时候,无论application id是否变化,yyy都是不生效的。application name依然是xxx
但是如果开启会话后,连续执行两次设置set spark.app.name=xxx;set spark.app.name=yyy;再执行sql查询,会以后面一次设置为准,即application name是yyy。
中文乱码解决
- linux的环境变量设置字符集
vi /etc/profile
export LANG=zh_CN.UTF-8
- 修改mapreduce的环境变量 Hadoop-env.sh
export HADOOP_OPTS="-server -Dfile.encoding=utf-8 -Duser.language=zh"
3.CM界面yarn配置(mapred-site.xml)搜索
mapreduce.map.java.opts
-Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh
mapreduce.reduce.java.opt
-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
4.修改spark 字符集
CM界面spark配置搜索spark-default.conf,添加:
spark.driver.extraJavaOptions=-Dfile.encoding=utf-8
spark.executor.extraJavaOptions=-Dfile.encoding=utf-8
5重启服务