2014-11-19 3 views
2

У меня есть искровое приложение, состоящее из нескольких классов. Я создаю JavaSparkContext в своем основном классе и использую его для получения данных из hdfs (sc.textFile). Затем эти данные передаются другому объекту, который его обрабатывает. Во время обработки мне нужен контекст снова, чтобы сделать RDD из списка. Я не хочу добавлять еще один параметр в API для передачи объекта контекста из основного класса в другой. Есть ли другие варианты, например, получение существующего контекста с использованием какого-либо статического метода?Spark: получить JavaSparkContext, который был создан в другом классе

P.S. Поиск в Интернете не помог.

ответ

3

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

Передача контекста как параметра для заданий является допустимым вариантом и будет моим предпочтительным способом. Убедитесь, что вы делаете этот переходный параметр, чтобы он не был «пойман» закрытием.

Вы также можете использовать классический шаблон «Singleton», используя класс, который инкапсулирует создание контекста и предоставляет статический метод для получения ссылки singleton.

Во всех случаях вам необходимо предоставить механизм обмена ctx, который соответствует вашим конкретным потребностям.

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