Как изменить имя приложения Spark после его запуска? - PullRequest
1 голос
/ 27 сентября 2019

У меня проблемы с обновлением / переконфигурированием предопределенного контекста Spark, называемого «spark»

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

Возвращает имя приложения «Оболочка данных». Я хочу обновить это и пытаюсь использовать:

spark.conf.set('spark.app.name', 'New_Name')

Однако это ничего не обновляет, потому что, когда я снова запускаю

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

, я все еще получаю 'Оболочку Databricks' Как мне обновить или внести какие-либо изменения в контекст искры?

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

tl; dr Вы не можете изменить имя приложения Spark после его запуска и запуска.


Просто слишком поздно, так как другие службы могут полагаться на значение иинициализируйте себя соответствующим образом (например, веб-интерфейс).

Можно ожидать, что такое изменение будет распространено на другие службы Spark, но это не так.

Именно поэтому вы определяете имя приложения иглавный URL при запуске приложения Spark.Обязательным условием является установка двух значений при запуске.


Обратите внимание, что spark.sparkContext._conf.get("spark.app.name") - это хак, и вам действительно следует использовать 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
0 голосов
/ 27 сентября 2019

вы можете изменить конфигурацию и имя приложения с помощью 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...