Вы можете просто использовать перенаправление 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")