SparkLauncher构造函数不起作用

时间:2018-05-21 11:10:39

标签: apache-spark spark-launcher

我需要从在Liberty(17.0.0.2)上运行的Web应用程序启动的线程运行Spark作业。这部署在Docker容器上。

我能够通过从java代码启动的spark-submit脚本启动spark(2.2.0)作业来实现这一点。但是,我想删除脚本调用并使用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);

有关如何进一步调试的任何线索?我找不到包含任何信息的日志来调试此问题。

2 个答案:

答案 0 :(得分:1)

这是一个阶级路径问题;有些罐子不见了。但是,不知何故日志中没有信息来调试这个,非常奇怪。在确保类路径中的所有相关jar后,它开始工作。

答案 1 :(得分:0)

您是否调用了SparkLauncher的启动方法?它将返回Process,您需要捕获此过程的输出以查看正在进行的操作