2015-10-21 2 views
3

Клянусь, что я сделал это раньше, но не могу найти код или ответ. Я хочу получить имя текущего запущенного SparkContext и прочитать его в переменной или распечатать его на экране. Что-то вдоль линий:Найти имя текущего запуска SparkContext

val myContext = SparkContext.getName 

Так, например, если бы я был в свече скорлупе и побежал было бы вернуть «SC». Кто-нибудь знает, как это получить?

ответ

3

Я не совсем уверен, что следую ... по имени, вы имеете в виду имя приложения? Если это так, вы должны позвонить appName. В искровой оболочке, например: sc.appName.

Если вы запрашиваете имя переменной, содержащей контекст, то я не уверен, что вы можете. sc - это всего лишь значение val, используемое для доступа к контексту внутри искровой оболочки, но вы можете называть его чем угодно в своем приложении.

[EDIT]
В SparkContext существует метод getOrCreate, который может возвращать существующий созданный и зарегистрированный контекст. Будет ли это делать то, что вы хотите?

https://spark.apache.org/docs/1.5.1/api/java/org/apache/spark/SparkContext.html#getOrCreate()

+0

Если я создал VAL СБН = новые SparkContext() Позже я хочу, чтобы иметь возможность сказать что-то вроде валь CtxName = SparkContext.name и возврата «SC» или что-то я мог бы бросить в виде строки со значением «СБН». Причина, по которой я пытаюсь сделать это, я пытаюсь использовать стороннюю библиотеку, которая создает (предположительно) SparkContext для меня, но, похоже, она не существует, и если это так, она называется soemthing, отличной от «sc», , Я надеялся просто получить имя, чтобы проверить его exeitence, а затем сможет создать с ним новый SQLContext, а не копаться в их коде, чтобы понять это. –

+0

Умм, я не думаю, что экземпляр знает имя val, в котором он хранится. Что вы, по сути, просите, это SparkContext, чтобы знать, где хранятся экземпляры, которые кажутся немного сумасшедшими. Если вы используете библиотеку, которая создает для вас контекст, просто посмотрите на их код, чтобы увидеть, как он называется (если вы наследуете черту или другой класс, это не должно быть слишком сложно). –

+0

Я только что обновил свой ответ с чем-то, что может вам помочь - статический метод 'getOrCreate' в' SparkContext' вернет ранее созданный и зарегистрированный контекст или даст вам новый. Я не думаю, что вы можете запускать несколько экземпляров контекста параллельно, поэтому, если он есть, вы должны его получить. –

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