Передайте аргументы opt в приложении, выполненном как .jar, через spark-submit --class и используйте существующий контекст - PullRequest
0 голосов
/ 08 мая 2018

Я пишу проект Scala, в котором я хочу, чтобы классы, выполняемые из spark-submit, были представлены в виде jar-класса. (например, spark-submit --class org.project

Мои проблемы следующие:

  1. Я хочу использовать конфигурацию spark-context, которую пользователь устанавливает при отправке с помощью spark, и при желании перезаписать некоторые параметры, такие как имя приложения. Пример: spark-submit --num-executors 6 --class org.project пропустит 6 в поле числа конфигураций exctors в контексте искры.

  2. Я хочу иметь возможность передавать параметры параметров, такие как --inputFile или --verbose, в мой проект, не влияя на параметры искры (возможно, с перекрытием имен)
    Пример: spark-submit --num-executors 6 --class org.project --inputFile ./data/mystery.txt должен передать "--inputFile ./data/mystery.txt" на вход аргумента метода org.project main.

Мой прогресс в этих проблемах следующий:

  1. Я бегу val conf = new SparkConf().setAppName("project"); val sc = new SparkContext(conf); по моему main методу
    но я не уверен, что все идет так, как ожидалось.

  2. Sparks рассматривает эти необязательные аргументы как аргументы spark-submit и выдает ошибку.

Примечание 1: Мой класс Java project в настоящее время не наследует никакой другой класс.

Примечание 2: Я новичок в мире искры и не смог найти что-то относительное из базового поиска.

1 Ответ

0 голосов
/ 08 мая 2018

Вам придется самостоятельно обрабатывать параметры. Здесь мы используем Scopt.

Когда ваша искра-подает вашу работу, она должна войти через объект def main(args: Array[String]). Принимает эти аргументы и анализирует их, используя ваш любимый анализатор аргументов, соответственно устанавливает ваши sparkConf и SparkSession и запускает ваш процесс.

У Spark есть примеры всей этой идеи: https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/mllib/DenseKMeans.scala

...