Конструктор SparkLauncher не работает

Мне нужно запустить задание Spark из потока, запущенного из веб-приложения, работающего на Liberty (17.0.0.2). Это развернуто в контейнере Docker.

Я могу заставить это работать, запустив задание spark (2.2.0) через сценарий spark-submit, запущенный из java-кода. Однако я хочу удалить вызов скрипта и использовать SparkLauncher. Когда я это делаю, код зависает в конструкторе SparkLauncher. Конструктор не возвращает ничего, блокирующего всю работу. Я не вижу журналы после вызова конструктора в коде ниже.

private static Map<String, String> env = new HashMap<String, String>();
static {
    env.put("SPARK_HOME", "/Spark");
    env.put("JAVA_HOME", "/opt/ibm/java-x86_64-80/jre");
    env.put("SPARK_PRINT_LAUNCH_COMMAND","1");
}
private static final String SPARK_MASTER_URL = "local[*]";

public SparkAppHandle launch(String appName, String appJar, String sparkClass, String[] args)
        throws IOException, InterruptedException {
    logger.logp(Level.INFO, CLASS, "launch", " About to create SparkLauncher ");
    SparkLauncher launchPad = new SparkLauncher(env);

    logger.logp(Level.INFO, CLASS, "launch", " About to set Spark App Name ");
    launchPad = launchPad.setAppName(appName);

Любая подсказка о том, как отлаживать это дальше? Я не смог найти журналы с какой-либо информацией для отладки этой проблемы.


person Girish Chafle    schedule 21.05.2018    source источник


Ответы (2)


Это была проблема пути к классу; некоторые баночки отсутствовали. Однако как-то в логе не было информации по отладке этого, очень странно. После обеспечения всех соответствующих банок в пути к классам он начал работать.

person Girish Chafle    schedule 06.06.2018

Вы вызываете метод запуска SparkLauncher? Он вернет Process, и вам нужно зафиксировать результат этого процесса, чтобы увидеть, что происходит.

person zjffdu    schedule 22.05.2018
comment
Нет, я использую не launch, а startApplication - person Girish Chafle; 22.05.2018
comment
startApplication также запустит другой процесс, вызовите метод redirectOutput, чтобы перенаправить вывод процесса - person zjffdu; 22.05.2018