jav*_*dba 9 scala apache-spark
最近有一个(2015年春季)功能,显然是为了允许以编程方式提交spark作业.
这是JIRA https://issues.apache.org/jira/browse/SPARK-4924
然而,关于如何实际使用这些功能存在不确定性(并且还算我).以下是jira中的最后评论:
当询问这项工作的实际作者进一步解释它是"查看API文档".
"用户文档"是Spark API文档.
作者没有提供进一步的细节,显然认为整个问题都是自我解释的.如果有人可以在这里连接点:具体 - 在API文档中的位置描述了这个更新的Spark提交功能 - 我们将不胜感激.
以下是我正在寻找的一些信息 - 以下内容:
更新SparkLauncher已接受答案中的引用确实在简单(master = local [*])条件下启动了一个简单的应用程序.还有待观察它在实际集群中的可用性.在链接代码中添加print语句后:
println("launch .. and waiting ..")spark.waitFor()
我们看到:
推出..等待..
那么这可能是向前迈出的一小步.当我走向真正的集群环境时,会更新这个问题.
查看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)
也可以看看: