如何使用程序化的spark提交功能

jav*_*dba 9 scala apache-spark

最近有一个(2015年春季)功能,显然是为了允许以编程方式提交spark作业.

这是JIRA https://issues.apache.org/jira/browse/SPARK-4924

然而,关于如何实际使用这些功能存在不确定性(并且还算我).以下是jira中的最后评论:

在此输入图像描述

当询问这项工作的实际作者进一步解释它是"查看API文档".

"用户文档"是Spark API文档.

作者没有提供进一步的细节,显然认为整个问题都是自我解释的.如果有人可以在这里连接点:具体 - 在API文档中的位置描述了这个更新的Spark提交功能 - 我们将不胜感激.

以下是我正在寻找的一些信息 - 以下内容:

  • spark api增加了哪些功能
  • 我们如何使用它们
  • 任何示例/其他相关文档和/或代码

更新SparkLauncher已接受答案中的引用确实在简单(master = local [*])条件下启动了一个简单的应用程序.还有待观察它在实际集群中的可用性.在链接代码中添加print语句后:

println("launch .. and waiting ..")spark.waitFor()

我们看到:

推出..等待..

那么这可能是向前迈出的一小步.当我走向真正的集群环境时,会更新这个问题.

DNA*_*DNA 9

查看pull请求的详细信息,似乎该功能由SparkLauncher类提供,在此处API文档中进行了描述.

public class SparkLauncher extends Object

用于Spark应用程序的启动器.

使用此类以编程方式启动Spark应用程序.该类使用构建器模式允许客户端配置Spark应用程序并将其作为子进程启动.

API文档相当简单,但我找到了一篇博文,其中给出了一个有用的示例(代码也可以在GitHub repo找到).我已经复制了以下示例的简化版本(未经测试),以防链接过时:

import org.apache.spark.launcher.SparkLauncher

object Launcher extends App {
  val spark = new SparkLauncher()
    .setSparkHome("/home/user/spark-1.4.0-bin-hadoop2.6")
    .setAppResource("/home/user/example-assembly-1.0.jar")
    .setMainClass("MySparkApp")
    .setMaster("local[*]")
    .launch();
  spark.waitFor();
}
Run Code Online (Sandbox Code Playgroud)

也可以看看: