在Apache Spark中提交应用程序

时间:2016-09-19 17:09:38

标签: java apache-spark

我是Apache Spark的新手并尝试创建一个简单的应用程序以在本地模式下运行它。我意识到它有像spark-submit这样的脚本来提交应用程序。

我正在寻找类似Apache Storm的类似内容 LocalCluster.submitTopology()以编程方式提交应用程序。请指出Spark中的等效API。 感谢您的帮助。 感谢。

3 个答案:

答案 0 :(得分:0)

我相信你可以在你的主要部分做到这一点:

 SparkSession sparkSession = SparkSession
            .builder()
            .master("local[2]")
            .appName("appName")
            .getOrCreate();

in 2.0。

在火花1.6中你是

SparkConf sparkConf = new SparkConf().setAppName("appName").setMaster("local[2]")
SparkContext sc = new SparkContext(sparkConf)

答案 1 :(得分:0)

因此,您可以在群集模式或本地模式下运行spark应用程序。 如果是群集,您可以选择yarn,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)

如果您想以编程方式在本地模式下运行spark应用程序,则必须在项目中设置spark库并提供no。在setMaster()属性中的应用程序中使用的线程数。现在应用程序将以本地模式运行。

SparkConf sparkConf = new SparkConf().setAppName("appName").setMaster("local[8]")
        SparkContext sc = new SparkContext(sparkConf)

答案 2 :(得分:0)

您可以使用SparkLauncher,在package summary库中描述如下:

  

此库允许应用程序以编程方式启动Spark。   该库只有一个入口点 - 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来控制您的Spark应用程序。也可以启动原始进程,但建议使用上面显示的方法。