启动spark-sql执行sql时,在监控页面中看到该Application的Name是SparkSQL:hadoop000(其中hadoop000是测试机器的hostname),就有个想法,修改下该application的name,在spark-sql --help中看到--name NAME的参数设置,于是乎就在启动spark-sql时设置参数:
spark-shell --name test
启动后发现该Application的Name还是SparkSQL:hadoop000,启动时指定的参数并没有生效,翻了下源码才知道原来是在SparkSQLCLIDriver启动过程中设置了SparkSQLEnv的信息,在SparkSQLEnv.init方法中
def init() { if (hiveContext == null) { val sparkConf = new SparkConf() .setAppName(s"SparkSQL::${java.net.InetAddress.getLocalHost.getHostName}") .set("spark.sql.hive.version", HiveShim.version) sparkContext = new SparkContext(sparkConf) ... } }
由于代码中设置的属性优先级大于命令行设置的属性,所以spark-sql启动的Application Name一直都是SparkSQL:hadoop000,属性设置参见spark1.0属性配置以及spark-submit简单使用