Мы развертываем в кластере Play! Приложение Framework (версия 2.3), которое запускает задания, требующие SparkContext (например, поиск в Hbase или WordCount). Наш кластер — это кластер Yarn. Чтобы запустить наше приложение, мы выполняем командную строку:
activator run
(после компиляции и упаковки)
Мы экспериментируем с некоторыми проблемами с конфигурацией SparkContext, мы используем эту конфигурацию:
new SparkConf(false)
.setMaster("yarn-cluster")
.setAppName("MyApp")
val sc = new SparkContext(sparkConf)
Когда мы вызываем маршрут, который вызывает задание с использованием SparkContext, мы получаем эту ошибку:
[RuntimeException: java.lang.ExceptionInInitializerError]
или этот (при перезагрузке):
[RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class mypackage.MyClass$]
Чтобы протестировать наш код, мы изменили параметр setMaster на
.setMaster("local[4]")
И это сработало хорошо. Но, конечно, наш код не распространяется, и мы не используем возможности Spark для распространения нашего кода (например, RDD).
Является ли запуск нашего приложения с помощью команды spark submit решением? Если да, то как это можно сделать?
Мы бы предпочли по-прежнему использовать команду активатора.