0

我需要从运行在 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);

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

4

2 回答 2

1

It was a class path issue; some jars were missing. However, somehow there was no information in the log to debug this, very strange. After ensuring all relevant jars in the classpath it started working.

于 2018-06-06T09:58:39.020 回答
0

你调用 SparkLauncher 的启动方法吗?它将返回 Process,您需要捕获此进程的输出以查看发生了什么

于 2018-05-22T00:36:55.853 回答