SparkSQL 子查询支持
SparkSQL 在 2.0 及更高版本中完全支持相关和非相关子查询。不过在2.0之前的版本中,Spark对子查询的支持是有限的。
对于FROM子句中的子查询,Spark支持的方式与Hive相同(版本
SELECT col FROM (SELECT * FROM t1 WHERE bar) t2
但是,2.0之前的Spark版本不支持WHERE子句中的子查询。这是由于性能问题以及每个子查询都可以使用 JOIN 表达的事实。
在 Spark 2.0 及更高版本中,支持相关和不相关子查询。示例包括:
SELECT * FROM l WHERE exists (SELECT * FROM r WHERE l.a = r.c) SELECT * FROM l WHERE l.a in (SELECT c FROM r)
但是,需要注意的是,在 2.0 之前的版本中使用 DataFrame DSL 来表达子查询目前是不可能的。
以上是SparkSQL如何处理跨版本的子查询?的详细内容。更多信息请关注PHP中文网其他相关文章!