2016-09-19 132 views
1

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

我在寻找类似的东西,像Apache Storm的 LocalCluster.submitTopology()以编程方式提交应用程序。请将我指向Spark中的等效API。 欣赏此帮助。 谢谢。

+0

你是什么意思“有问题” –

+0

他的意思是“编程”@kamal Pradhan – avrsanjay

回答

0

我相信你可以在你的主这样做:在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) 
0

所以你凸轮无论是在集群模式或本地模式运行的火花应用。 在群集的情况下,您可以选择纱线,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) 
0

可以使用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控制你的星火应用。也可以启动一个原始程序,但建议使用上面所示的方法。