gpt4 book ai didi

java - Java 中的 Spark 提交(SparkLauncher)

转载 作者:可可西里 更新时间:2023-11-01 14:48:26 25 4
gpt4 key购买 nike

我制作了 spark+hadoop yarn 环境并且 spark-submit 命令运行良好。所以我在我的应用程序 jar 中制作了 SparkLauncher java 代码来执行此操作,但不知何故它不起作用(实际上电脑风扇一开始是在旋转,但不像我使用 spark-submit 那样长。)

它似乎运行不佳(与 spark-submit 不同,hadoop web ui 中没有应用程序登录)。当我使用“SparkLauncher”时,我看不到任何错误日志。没有日志消息,我无法用它做任何事情。

到目前为止,这是我如何做到的。

public class Main {
public static void main(String[] args) {
Process spark = null;
try
{
spark = new SparkLauncher()
.setAppResource("/usr/local/spark/examples/jars/spark-examples*.jar")
.setMainClass("org.apache.spark.examples.SparkPi")
.setMaster("yarn")
.setDeployMode( "cluster")
.launch();
}
catch( IOException e)
{
e.printStackTrace();
}
}
}

用 (java -jar example.jar) 执行它

最佳答案

我一开始也遇到了同样的问题。我认为主要问题是您忘记了 waitFor()。

此外,在 Java 代码中提取 errorMessage 并处理它(例如记录它或在调试时检查它)真的很有帮助。为此,您应该创建一个 streamReader 线程,如下所示:

    InputStreamReaderRunnable errorStreamReaderRunnable = new InputStreamReaderRunnable(spark.getErrorStream(), "error");
Thread errorThread = new Thread(errorStreamReaderRunnable, "LogStreamReader error");
errorThread.start();

int result= spark.waitFor();
if(result!=0) {
String errorMessage = extractExceptionMessage(errorStreamReaderRunnable.getMessage());
LOGGER.error(errorMessage);
}

这应该在您的 launch() 命令之后和您的 try block 内。希望对你有帮助

关于java - Java 中的 Spark 提交(SparkLauncher),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42780886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com