我正在Apache Spark上构建一个RESTful API.提供以下Python脚本spark-submit
似乎工作正常:
import cherrypy from pyspark.sql import SparkSession spark = SparkSession.builder.appName('myApp').getOrCreate() sc = spark.sparkContext class doStuff(object): @cherrypy.expose def compute(self, user_input): # do something spark-y with the user input return user_output cherrypy.quickstart(doStuff())
但谷歌搜索我看到像Livy和spark-jobserver这样的东西.我阅读了这些项目的文档和一些教程,但我仍然不完全理解Livy或spark-jobserver优于使用CherryPy或Flask或任何其他Web框架的简单脚本的优点.它是关于可扩展性的吗?上下文管理?我在这里错过了什么?如果我想要的是一个用户不多的简单RESTful API,那么Livy或spark-jobserver值得吗?如果是这样,为什么?
如果使用spark-submit
,则必须手动将JAR文件上载到群集并运行命令.一切都必须在跑步前准备好
如果您使用Livy或spark-jobserver,那么您可以以编程方式上载文件并运行作业.您可以添加将连接到同一群集的其他应用程序,并使用下一个作业上载jar
更重要的是,Livy和Spark-JobServer允许你在交互模式下使用Spark,这很难用spark-submit;)