在Apache Spark中提交应用程序
问题描述:
我是Apache Spark的新手,并尝试创建一个简单的应用程序以本地模式运行它。我意识到它有像这样的脚本来提交应用程序。在Apache Spark中提交应用程序
我在寻找类似的东西,像Apache Storm的 LocalCluster.submitTopology()
以编程方式提交应用程序。请将我指向Spark中的等效API。 欣赏此帮助。 谢谢。
答
我相信你可以在你的主这样做:在2.0
SparkSession sparkSession = SparkSession
.builder()
.master("local[2]")
.appName("appName")
.getOrCreate();
。
在火花1.6你最好:
SparkConf sparkConf = new SparkConf().setAppName("appName").setMaster("local[2]")
SparkContext sc = new SparkContext(sparkConf)
答
所以你凸轮无论是在集群模式或本地模式运行的火花应用。 在群集的情况下,您可以选择纱线,mesos群集或spark独立群集。
如果要将应用程序提交到yarn或mesos,则必须将spark应用程序打包成一个胖罐子,然后使用spark-submit将其从控制台提交。
如果要以编程方式在群集中运行Spark应用程序,则必须设置spark独立群集并在setMaster()属性中提供主节点的IP地址。现在应用程序将在群集中运行。
SparkConf sparkConf = new SparkConf().setAppName("appName").setMaster("spark://sparkmasterip:7077")
SparkContext sc = new SparkContext(sparkConf)
如果要以本地模式运行的火花应用程序编程
你必须设置火花图书馆项目,提供了没有。线程在setMaster()属性中的应用中使用。现在应用程序将以本地模式运行。
SparkConf sparkConf = new SparkConf().setAppName("appName").setMaster("local[8]")
SparkContext sc = new SparkContext(sparkConf)
答
可以使用SparkLauncher
,在package summary库描述如下:
这个库允许应用程序以编程方式启动的火花。 只有一个入口点 - SparkLauncher类。
有了它,你可以启动一个应用程序的Spark这样的:
import org.apache.spark.launcher.SparkAppHandle;
import org.apache.spark.launcher.SparkLauncher;
public class MyLauncher {
public static void main(String[] args) throws Exception {
SparkAppHandle handle = new SparkLauncher()
.setAppResource("/my/app.jar")
.setMainClass("my.spark.app.Main")
.setMaster("local")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.startApplication();
// Use handle API to monitor/control application.
}
}
这给你一个SparkAppHandle
控制你的星火应用。也可以启动一个原始程序,但建议使用上面所示的方法。
你是什么意思“有问题” –
他的意思是“编程”@kamal Pradhan – avrsanjay