Как установить очередь с помощью org. apache .spark.launcher.SparkLauncher - PullRequest
1 голос
/ 28 февраля 2020

Если я использую командную строку spark-submit для отправки искровой задачи на пряжу, я смогу установить очередь с --queue myqueuename

Полная команда будет

/myserver/spark-2.2.0-bin-hadoop2.4/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--executor-memory 4G \
--executor-cores 2 \
--queue myqueuename \
--class task.MyTask \
 "/my/jar/path/spark-app-full.jar"  \
--input  /data/input/path \
--output  /data/output/path/ 

Однако, как установить очередь с SparkLauncher из java. Я хотел бы запустить искровое задание программно.

Мой java код до сих пор

SparkAppHandle handle = new SparkLauncher()
        .setSparkHome("/myserver/spark-2.2.0-bin-hadoop2.4")
        .setAppResource(jarPath)
        .setMainClass("task.MyTask")
        .setMaster("yarn")
        .setDeployMode("cluster")
        .setConf(SparkLauncher.EXECUTOR_MEMORY, "8G")
        .setConf(SparkLauncher.EXECUTOR_CORES, "4")
        .addAppArgs("--input",
                inputPath,
                "--output",
                outputPath)
        .startApplication(taskListener);

Я хотел бы знать, как указать c очередь в java коде с использованием SparkLauncher

1 Ответ

1 голос
/ 28 февраля 2020

Согласно https://spark.apache.org/docs/latest/running-on-yarn.html, setConf("spark.yarn.queue", "myqueuename") делает трюк:

SparkAppHandle handle = new SparkLauncher()
        .setSparkHome("/myserver/spark-2.2.0-bin-hadoop2.4")
        .setAppResource(jarPath)
        .setMainClass("task.MyTask")
        .setMaster("yarn")
        .setDeployMode("cluster")
        .setConf(SparkLauncher.EXECUTOR_MEMORY, "8G")
        .setConf(SparkLauncher.EXECUTOR_CORES, "4")
        .setConf("spark.yarn.queue", "myqueuename") // <-- SETTING A QUEUE NAME
        .addAppArgs("--input",
                inputPath,
                "--output",
                outputPath)
        .startApplication(taskListener);
...