spark-sql启动后在监控页面中显示的Application Name为SparkSQL::xxxx的疑问

启动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简单使用

原文地址:https://www.cnblogs.com/luogankun/p/4135006.html