2015-06-10 6 views
8

Я знаю, что могу использовать SparkConf.set('spark.app.name',...) для установки appNameдо, создавая SparkContext.Могу ли я изменить SparkContext.appName на лету?

Однако я хочу изменить имя приложения по мере его продвижения, т. Е. После того, как было создано SparkContext.

Увы, установка sc.appName не меняется, как работа отображается yarn application -list.

Есть ли способ?

ответ

12

Это не представляется возможным: любое изменение к sparkConf, в том числе spark.app.name, только учитывается до экземпляра SparkConf используется для создании экземпляра SparkContext:

Заметьте, что когда-то объект SparkConf передается в Spark, он клонируется и больше не может быть изменен пользователем. Spark не поддерживает изменение конфигурации во время выполнения.

https://spark.apache.org/docs/1.3.1/api/scala/index.html#org.apache.spark.SparkConf

+0

Обратите внимание, что я не спрашиваю об изменении 'SparkConf' а о модификации' SparkContext.appName' непосредственно. – sds

+1

Я не думаю, что это возможно, 'sc.appName' реализуется как' val appName = conf.get («spark.app.name») ', который, конечно же, не может быть назначен, и любые изменения через' sc. getconf.setXYZ') не будет иметь никакого эффекта, поскольку getConf является 'def getConf: SparkConf = conf.clone()'. После создания контекста конфигурация считается неизменной и передается как таковая всем заинтересованным сторонам. – Svend

Смежные вопросы