gpt4 book ai didi

java - 部署spark驱动程序应用程序而无需spark提交

转载 作者:行者123 更新时间:2023-12-02 05:53:46 25 4
gpt4 key购买 nike

假设我们有一个如下所示的 Spark 驱动程序:

public class SimpleApp {
public static void main(String[] args) {
String logFile = "YOUR_SPARK_HOME/README.md"; // Should be some file on your system
SparkConf conf = new SparkConf().setAppName("Simple Application");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(logFile).cache();

long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("a"); }
}).count();

long numBs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("b"); }
}).count();

System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
}
}

并且我想在 yarn 集群中运行,我可以通过在上下文中指定我想在 yarn 上运行来避免使用spark-submit(当然假设我可以访问一个集群节点)吗?换句话说,是否可以利用yarn将spark客户端作为常规java应用程序启动?

最佳答案

这是另一种官方方法。

Spark Launcher - 用于启动 Spark 应用程序的库。

该库允许应用程序以编程方式启动 Spark。该库只有一个入口点 - SparkLauncher 类。

要启动 Spark 应用程序,只需实例化 SparkLauncher 并配置要运行的应用程序即可。例如:

 import org.apache.spark.launcher.SparkLauncher;

public class MyLauncher {
public static void main(String[] args) throws Exception {
Process spark = new SparkLauncher()
.setAppResource("/my/app.jar")
.setMainClass("my.spark.app.Main")
.setMaster("local")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.launch();
spark.waitFor();
}
}

您可以使用 setConf 方法设置所有 YARN 特定配置,并将 master 设置为 yarn-clientyarn-cluster

引用文献: https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/launcher/package-summary.html

关于java - 部署spark驱动程序应用程序而无需spark提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39404360/

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