java - 从命令获取非覆盖火花配置的任何方式
问题描述
我正在运行以下火花命令
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?
解决方案
推荐阅读
- c++ - 为什么(Qt 5.15.2)STL 风格的反向迭代器不能用于从头到尾的打印?
- javascript - Jquery Datepicker、字符串连接和#selector
- python - 如何在python中使用迭代器作为变量名?
- powershell - PowerShell 中的递归斐波那契
- sql-server - 您可以为多个 SQL Server 实例使用 1 个 ssrs 报告服务器(和报告)吗
- git - git name-rev tag 语法含义?
- git - 推送分支时 Jenkins Git Publish 失败;没有显示标准错误
- typescript - 如何告诉 TypeScript object[foo] 的类型是所有可能的 object.prop 类型的子集
- web-config - 生产中的会话状态更改,但测试 Web 服务器上没有
- r - 编写r函数来修改数据框中的值