我有一个spark作业,我通常使用spark-submit运行,输入文件名作为参数。现在我想让团队工作,所以人们可以提交一个输入文件(可能通过一些web-API),然后触发spark工作,它将返回用户结果文件(可能还通过web- API)。 (我使用的是Java / Scala)
在这种情况下,我需要构建什么才能触发火花作业?在某处有一些教程吗?我应该使用火花流吗?谢谢!
答案 0 :(得分:1)
一种方法是让Web服务器监听作业,并且每个Web请求都可能触发{{1}}的执行。
您可以使用Java的ProcessBuilder执行此操作。
据我所知,除了通过{{1}}之外,没有其他方法可以调用火花作业。
答案 1 :(得分:1)
你可以使用Livy。 Livy是一个开源的REST接口,可以在任何地方使用Spark。
Livy是一个新的开源Spark REST服务器,用于从任何地方提交和交互您的Spark作业。 Livy在概念上基于非常受欢迎的IPython / Jupyter,但实现了更好地与多用户集成到Hadoop生态系统。 Spark现在可以通过简单的方式作为服务提供给任何人:Python或Scala中的Spark shell可以由Livy在集群中运行,而最终用户可以通过REST API自行操作它们。也可以提交常规的非交互式应用程序。作业的输出可以以表格格式进行内省和返回,这使得它可以在图表中显示。 Livy可以指向一个独特的Spark集群,并由用户创建多个上下文。使用YARN模拟,将使用提交它们的用户的实际权限执行作业。
请查看此网址以获取信息。 https://github.com/cloudera/livy
答案 2 :(得分:0)
您可以使用SparkLauncher
类来执行此操作。您将需要有一个REST API
,它将从用户那里获取文件,然后使用SparkLauncher
触发火花作业。
Process spark = new SparkLauncher()
.setAppResource(job.getJarPath())
.setMainClass(job.getMainClass())
.setMaster("master spark://"+this.serverHost + ":" + this.port)
.launch();