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条答案
按热度按时间cl25kdpy1#
是的,可以通过Livy提交Spark SQL查询。但是,[目前]不支持独立提交的查询。它们需要用Python或Scala代码 Package 。
下面是两个使用Python执行Spark SQL查询的例子,通过请求lib和Scala代码作为字符串在“spark”中执行,从而与Livy进行交互:
1)在livy中使用%json魔法(网址:http://github.com/apache/孵化器-livy/blob/412 ccc 8 fcf 96854 fedbe 76 af 8 e5 a6 fec 2c 542 d25/repl/src/test/scala/org/apache/livy/repl/Python解释器规范。
2)在livy中使用%表格魔术(http://github.com/apache/孵化器-livy/blob/412 ccc 8 fcf 96854 fedbe 76 af 8 e5 a6 fec 2c 542 d25/repl/src/测试/scala/org/apache/livy/repl/Python解释器规范。
lsmepo6l2#
如果使用Livy 0.7.0或更高版本,则实际上不需要魔术字符串。
1.创建会话:
1.运行查询:
1.定期轮询结果:
就是这样,现在你可以在任何语言中使用这种方法,已经有一个Python库PyLivy,它基本上遵循了这种方法。