apache-spark - How to change the name of Spark application after it is started?
问题描述
I am having trouble updating/reconfiguring a predefined Spark Context called "spark"
spark.sparkContext._conf.get("spark.app.name")
Returns the app name 'Databricks Shell' I want to update this and I try using:
spark.conf.set('spark.app.name', 'New_Name')
However this does not update anything, because when I again run
spark.sparkContext._conf.get("spark.app.name")
I still get 'Databricks Shell' How do I update or make any changes to the spark context?
解决方案
tl;dr在 Spark 应用程序启动并运行后,您无法更改其名称。
为时已晚,因为其他服务可以依赖该值并适当地初始化自己(例如 Web UI)。
您可以期望这样的更改会传播到其他 Spark 服务,但事实并非如此。
这就是您在启动 Spark 应用程序时定义应用程序名称和主 URL 的原因。在启动时设置这两个值是一个先决条件。
请注意,这spark.sparkContext._conf.get("spark.app.name")
是一个 hack,你应该真正使用它spark.sparkContext.appName
。
另请注意,您用于配置的对象类型是不同的,它们实际上用于两个不同的模块 - Spark Core ( SparkContext
) 和 Spark SQL ( SparkSession.conf
)。
并且在 Spark 的最新版本中,_conf
不再可访问。
scala> spark.version
res2: String = 2.4.4
scala> spark.sparkContext._conf.get("spark.app.name")
<console>:24: error: variable _conf in class SparkContext cannot be accessed in org.apache.spark.SparkContext
spark.sparkContext._conf.get("spark.app.name")
^
您实际上应该使用它spark.sparkContext.getConf
。
同样,这两个配置对象是不同的。
scala> :type spark.sparkContext.getConf
org.apache.spark.SparkConf
scala> :type spark.conf
org.apache.spark.sql.RuntimeConfig
推荐阅读
- c++ - 从进程内存中清除字符串
- python - 如何通过python代码将pdf文档转换为xml文档(在colab中)
- reactjs - Socket.io - 达到重新连接尝试的回调?
- kivy - 检测从 Kivy 标签中裁剪的文本
- php - Dockerized wordpress front-end/admin 无法完全加载(无法加载样式表和 JS 文件)
- spring - 无法使用 Spring Rest API 模板更新缩放会议
- winforms - Visual Studio 设计器 (WinForms) 上的 SQLCommand 错误
- java-native-interface - 是否可以在 JNI 中创建 java 侦听器的新作业?
- ssl - JMeter JMS:出现错误:无法通过 SSL 连接到 [ssl://
:7352]:收到致命警报:protocol_version - amazon-web-services - AWS REST API Gives 403:使用 API 资源策略和前端 (HTML+Javascript) 时访问被拒绝错误