Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark应用程序启动后如何更改其名称?_Apache Spark_Pyspark - Fatal编程技术网

Apache spark Spark应用程序启动后如何更改其名称?

Apache spark Spark应用程序启动后如何更改其名称?,apache-spark,pyspark,Apache Spark,Pyspark,我无法更新/重新配置名为“Spark”的预定义Spark上下文 返回应用程序名“Databricks Shell”。我要更新此应用程序,并尝试使用: spark.conf.set('spark.app.name', 'New_Name') 但是,这不会更新任何内容,因为当我再次运行 spark.sparkContext._conf.get("spark.app.name") 我仍然得到“Databricks Shell”如何更新或更改spark上下文?您可以使用SparkConf或Spark

我无法更新/重新配置名为“Spark”的预定义Spark上下文

返回应用程序名“Databricks Shell”。我要更新此应用程序,并尝试使用:

spark.conf.set('spark.app.name', 'New_Name')
但是,这不会更新任何内容,因为当我再次运行

spark.sparkContext._conf.get("spark.app.name")

我仍然得到“Databricks Shell”如何更新或更改spark上下文?

您可以使用SparkConf或SparkSession builder修改配置和应用程序名称

from pyspark.sql import SparkSession
from pyspark import SparkConf, SparkContext

# with SparkConf()
conf = SparkConf().setAppName('TA').set("spark.driver.memory", "1g")
conf = SparkConf().setAppName('TA').set("spark.executor.memory", "12g")
spark = SparkSession.builder.config(conf=conf).getOrCreate()

#with SparkSession builder
spark = SparkSession.builder.appName("Python Spark").getOrCreate()

tl;drSpark应用程序启动并运行后,您无法更改其名称


现在已经太晚了,因为其他服务可能依赖该值并适当地初始化它们自己(例如web UI)

您可以预期这样的更改会传播到其他Spark服务,但事实并非如此

这就是为什么在启动Spark应用程序时定义应用程序名称和主URL。启动时设置这两个值是先决条件


请注意,
spark.sparkContext.\u conf.get(“spark.app.name”)
是一种黑客行为,您应该真正使用
spark.sparkContext.appName

还请注意,用于配置的对象类型不同,它们实际上用于两个不同的模块—Spark Core(
SparkContext
)和Spark SQL(
SparkSession.conf

在Spark的最新版本中,
\u 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")
                          ^

谢谢你的回答,但是如果我在此之前为SparkSession“spark”定制了配置,它们会丢失吗?创建SparkSession实例没有限制,可以根据需要创建,可以是多个实例,具有各种配置选项在运行你发送的代码后,我仍然会得到:('spark.app.name','Databricks Shell')我不知道为什么。即使我将会话命名为spark2,它仍然被命名为Databricks Shell
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")
                          ^
scala> :type spark.sparkContext.getConf
org.apache.spark.SparkConf

scala> :type spark.conf
org.apache.spark.sql.RuntimeConfig