我正在运行一个 spark 独立集群,其中有 3 个节点。一个是master,另外两个是worker。我在所有三个节点中都复制了/home/bizruntime/***.jar的所有三个节点中的作业,当我在 master 中使用 spark-submit 提交作业时,作业正在运行。
但是我的集群位于远程位置,我每次都无法访问主节点终端。所以我想使用 Spark Launcher 从我的笔记本电脑(一台 Windows 机器)中触发作业。但是,当我在笔记本电脑的 Eclipse 中运行我的 spark 启动程序时,它会启动一个驱动程序,我可以在 Spark UI 中看到该驱动程序,但随后会出现错误。当我在日志中检查错误时,因为在节点中找不到 jar。
我在 appResource() 函数 Spark 启动器中给出的路径是/home/bizruntime/***.jar这个。但他们正在$Eclipse_Worksapce/home/bizruntime/***.jar 中搜索 jar
我的问题是如何在没有 $Eclipse_Worksapce 的情况下给出绝对路径。
package com.biz.Remote_Start;
import java.io.IOException;
import org.apache.spark.launcher.SparkAppHandle;
import org.apache.spark.launcher.SparkLauncher;
/**
* Hello world!
*
*/
public class App {
public static void main(String[] args) {
try {
Process handle = new SparkLauncher()
.setAppResource("home/bizruntime/Read_from_ADL-0.0.1-SNAPSHOT.jar")
.setMainClass("com.biz.Read_from_ADL.App")
.setMaster("spark://192.168.1.154:7077")
.setDeployMode("cluster")
.launch();
handle.waitFor();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}