Apache spark apachelivy:通过REST查询sparksql:可能吗?

Apache spark apachelivy:通过REST查询sparksql:可能吗?,apache-spark,Apache Spark,ApacheLivy文档很少:是否可以使用ApacheLivy以REST调用的形式返回Spark SQL查询结果集?调用应用程序是移动的,无法使用odbc/jdbc进行连接。因此,Spark thriftserver不是一个选项 是的,可以通过Livy提交Spark SQL查询。但是,[目前]不支持单独提交的查询。它们需要用Python或Scala代码包装 下面是两个使用Python执行Spark SQL查询的示例,它们通过请求lib和Scala代码作为字符串与Livy交互,以“在Spark中”

ApacheLivy文档很少:是否可以使用ApacheLivy以REST调用的形式返回Spark SQL查询结果集?调用应用程序是移动的,无法使用odbc/jdbc进行连接。因此,Spark thriftserver不是一个选项

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

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

1) 在livy()中使用%json魔术

2) 在livy()中使用%table magic


是的,可以通过livy使用spark SQL进行查询,但目前无法发布纯SQL。SQL需要用Python、scala或java进行包装。Livy结果可以使用相对未记录的特性(如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()
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()