首页 > 解决方案 > 从命令获取非覆盖火花配置的任何方式

问题描述

我正在运行以下火花命令

spark-submit --name Basic_class1 --class com.test2.Basic /Users/myusername/Downloads/project/spark/target/target-basic.jar

在主文件中,

SparkSession sparkSession = SparkSession
                .builder()
                .appName("Basic")
                .master("local")
                .getOrCreate();

在这里,sparkSession 覆盖了命令中提供的 appname,并将其从“Basic_class1”设置为“Basic”。但是,我需要在我的依赖文件中使用非覆盖参数“Basic_class1”,但我无权访问他们设置 appname 的主文件。在应用程序名被覆盖后是否有获取该参数的方法?

我知道我可以为此在属性文件中设置一些属性,但这需要在其他部分进行大量更改。所以,这就是为什么我想知道我们是否可以在代码本身中做到这一点。

我尝试过的方法

我查看了返回的参数sparkContext.conf().getAll(),但 appname 也在那里被覆盖。我一直在研究火花上下文和配置中的其他方法,但无法获得任何结果。此外,也没有从互联网上得到任何帮助。

编辑 1

对于问题中提到的火花提交命令和火花会话,如果我们这样做

System.out.println(sparkSession.sparkContext().appName());

然后它打印“基本”。但是,如果我们将 sparksession 创建更改为

SparkSession sparkSession = SparkSession
                .builder()
//                .appName("Basic")
                .master("local")
                .getOrCreate();

然后

System.out.println(sparkSession.sparkContext().appName());

将打印出“Basic_class1”。所以,如果我没有在我的代码中给出 appName,那么 --name 中的任何内容都会被打印出来。但由于文件中有 appName,我想知道我是否仍然可以获得 --name?

标签: javaapache-spark

解决方案


推荐阅读