我在文件 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 中,在这种情况下我将不得不维护很多文件。