Команда spark-submit не найдена при отправке с использованием Runtime.getRuntime (). exec - PullRequest
1 голос
/ 07 июня 2019

У меня есть сценарий использования, когда мне нужно сделать иск, отправив код Python из приложения Java.Я написал следующий код для того же:

    String command = "spark-submit /home/hadoop/sample.py "
            + "--input_dir " + getTmpModelInputPath() + "/* " + "--output_dir " + getTmpModelOutputPath();

    final String[] arr = { "/bin/sh", "-c", command};

    Process p = Runtime.getRuntime().exec(arr);

    try {
        int exitVal = p.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
        throw new RuntimeException("job failed");
    }

Команда завершилась неудачно с "искрой sumit" не найден.Когда я запускаю командную строку непосредственно на главном узле, она работает нормально.Кто-нибудь знает, что здесь не так?

1 Ответ

0 голосов
/ 12 июня 2019

Мне не удалось устранить причину ошибки для команды not found. Искра-отправка для основного приложения была запущена в режиме кластера. Следовательно, spark-submit, выполненный в коде Java, был выполнен на "узле исполнителя", а не на главном узле. Узлы-исполнители не имеют искробезопасной отправки на хосте.

Тот же код выше будет работать, если мы отправим основное приложение в режиме клиента. Это гарантирует, что следующая искробезопасная отправка будет выполняться на главном узле, на котором установлен двоичный код искробезопасной отправки в EMR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...