通过 RESTful API 查询 SPARK 作业产生的数据
Posted
技术标签:
【中文标题】通过 RESTful API 查询 SPARK 作业产生的数据【英文标题】:Querying data produced by SPARK job via RESTful API 【发布时间】:2017-10-11 12:46:56 【问题描述】:我对火花很陌生。我使用 SPARK 作业生成了一个包含大约 420 mb 数据的文件。我有一个 Java 应用程序,它只需要根据某些条件从该文件中同时查询数据并以 json 格式返回数据。 到目前为止,我已经为 SPARK 找到了两个 RESTful API,但它们仅用于远程提交 SPARK 作业和管理 SPARK 上下文,
1)Livy
2)Spark job-server
如果可用,还有哪些其他选项可以做同样的事情(数据库除外)?
【问题讨论】:
【参考方案1】:您实际上可以使用 Livy 以 RESTful 方式将结果返回为友好的 JSON!
session_url = host + "/sessions/1"
statements_url = session_url + '/statements'
data =
'code': textwrap.dedent("""\
val d = spark.sql("SELECT COUNT(DISTINCT food_item) FROM food_item_tbl")
val e = d.collect
%json e
""")
r = requests.post(statements_url, data=json.dumps(data), headers=headers)
print r.json()
我的参考答案:Apache Livy: query Spark SQL via REST: possible?
相关:Livy Server: return a dataframe as JSON?
【讨论】:
谢谢加伦。在这种方法中创建 json 是否有任何大小或长度限制,可以发送回应用程序 我不知道是否有大小限制,但是有一些固有的限制,因为它必须将结果“收集”回驱动程序。如果您有时间等待它构建并返回一百万行结果,它可能会强制执行 ;) 我在postman
的请求正文中以 "code":"textwrap.dedent(\"\"\" val d = spark.sql(\"SELECT COUNT(DISTINCT food_item) FROM food_item_tbl\") val e = d.collect \%json e \"\"\")
发布数据。它不起作用。我在这里遗漏了什么
@UtkarshSaraf 我不知道。您能否就错误和任何其他信息提出这个问题?以上是关于通过 RESTful API 查询 SPARK 作业产生的数据的主要内容,如果未能解决你的问题,请参考以下文章
设计带有一长串查询参数的 RESTful 查询 API [关闭]