gpt4 book ai didi

apache-spark - Apache 利维 : query Spark SQL via REST: possible?

转载 作者:行者123 更新时间:2023-12-03 11:09:28 24 4
gpt4 key购买 nike

apache Livy 文档很少:是否可以使用 Apache Livy 将 Spark SQL 查询结果集作为 REST 调用返回?调用应用程序是移动的,它不能使用 odbc/jdbc 进行连接。所以 Spark thriftserver 不是一个选项。

最佳答案

是的,可以通过 Livy 提交 Spark SQL 查询。但是,[当前] 不支持自行提交查询。它们需要用 Python 或 Scala 代码包装。

以下是使用 Python 执行 Spark SQL 查询以通过请求库和 Scala 代码作为字符串与 Livy 交互以“在 spark 中”执行的两个示例:

1) 在 livy ( https://github.com/apache/incubator-livy/blob/412ccc8fcf96854fedbe76af8e5a6fec2c542d25/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala#L91 ) 中使用 %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()

2) 在 livy 中使用 %table 魔法 (https://github.com/apache/incubator-livy/blob/412ccc8fcf96854fedbe76af8e5a6fec2c542d25/repl/src/test/scala/org/apache/livy/repl/PythonInterpreterSpec.scala#L105)

session_url = host + "/sessions/21"
statements_url = session_url + '/statements'
data = {
'code': textwrap.dedent("""\
val x = List((1, "a", 0.12), (3, "b", 0.63))
%table x
""")}
r = requests.post(statements_url, data=json.dumps(data), headers=headers)
print r.json()

关于apache-spark - Apache 利维 : query Spark SQL via REST: possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com