Можно ли запустить скрипт Spark Scala, не заходя в spark-shell? - PullRequest
4 голосов
/ 21 февраля 2020

Единственный известный мне способ запуска искрового кода Scala - это либо скомпилировать программу Scala в файл jar и запустить ее с помощью spark-submit, либо запустить скрипт Scala с помощью команды: load inside искра-оболочка. Мой вопрос: возможно запустить файл Scala непосредственно из командной строки, не заходя сначала в спарк-оболочку, а затем выдавая: load?

Ответы [ 2 ]

3 голосов
/ 21 февраля 2020

Вы можете просто использовать перенаправление stdin с spark-shell:

spark-shell < YourSparkCode.scala

Эта команда запускает оболочку-искру, интерпретирует вашу YourSparkCode.scala строку за строкой и выходит в конце.

Другой вариант - использовать параметр -I <file> команды spark-shell:

spark-shell -I YourSparkCode.scala

Единственное отличие состоит в том, что последняя команда оставляет вас внутри оболочки, и вы должны выполнить команду :quit, чтобы закрыть сеанс.

[UDP] Передача параметров

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

К счастью, может быть много вариантов, чтобы приблизиться к одному и тому же (например, перенести параметры в другой файл и прочитать его в самом начале в вашем скрипте).

Но лично я нахожу конфигурацию Spark наиболее чистой и удобной.

Вы передаете свои параметры с помощью опции --conf:

spark-shell --conf spark.myscript.arg1=val1 --conf spark.yourspace.arg2=val2 < YourSparkCode.scala

(обратите внимание, что префикс spark. в имени вашей собственности является обязательным, в противном случае Spark откажется от вашей собственности как недействительной)

И прочитайте эти аргументы в вашем коде Spark, как показано ниже:

val arg1: String = spark.conf.get("spark.myscript.arg1")
val arg2: String = spark.conf.get("spark.myscript.arg2")
0 голосов
/ 21 февраля 2020

Это возможно через spark-submit.

https://spark.apache.org/docs/latest/submitting-applications.html

Вы даже можете поместить его в сценарий bash или создать sbt-task https://www.scala-sbt.org/1.x/docs/Tasks.html для запуска вашего кода.

...