我是Apache Spark的新手并尝试创建一个简单的应用程序以在本地模式下运行它。我意识到它有像spark-submit
这样的脚本来提交应用程序。
我正在寻找类似Apache Storm的类似内容
LocalCluster.submitTopology()
以编程方式提交应用程序。请指出Spark中的等效API。
感谢您的帮助。
感谢。
答案 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应用程序。也可以启动原始进程,但建议使用上面显示的方法。