【发布时间】:2018-03-11 05:08:04
【问题描述】:
我在 test.sql 文件中有一个 Spark SQL 查询 -
CREATE GLOBAL TEMPORARY VIEW VIEW_1 AS select a,b from abc
CREATE GLOBAL TEMPORARY VIEW VIEW_2 AS select a,b from VIEW_1
select * from VIEW_2
现在,我启动我的 spark-shell 并尝试像这样执行它 -
val sql = scala.io.Source.fromFile("test.sql").mkString
spark.sql(sql).show
这会失败并出现以下错误 -
org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input '<' expecting {<EOF>, 'GROUP', 'ORDER', 'HAVING', 'LIMIT', 'OR', 'AND', 'WINDOW', 'UNION', 'EXCEPT', 'MINUS', 'INTERSECT', 'SORT', 'CLUSTER', 'DISTRIBUTE'}(line 1, pos 128)
我尝试在不同的 spark.sql 语句中一一执行这些查询,并且运行良好。问题是,我有 6-7 个查询来创建临时视图,最后我需要上一个视图的输出。有没有一种方法可以让我在单个 spark.sql 语句中运行这些 SQL。我曾研究过 Postgres SQL (Redshift),它能够执行此类查询。在 spark sql 中,在这种情况下我将不得不维护很多文件。
【问题讨论】:
标签: scala apache-spark apache-spark-sql