我正在shell中运行这个查询,但是它给了我错误,
sqlContext.sql(
"select sal from samplecsv where sal < (select MAX(sal) from samplecsv)"
).collect().foreach(println)错误:
java.lang.RuntimeException: 1.47失败:)预期的,但是标识符MAX找到了 从samplecsv中选择sal <(从samplecsv中选择MAX( sal ) )^ at scala.sys.package$.error(package.scala:27),谁能解释我,谢谢
发布于 2015-11-26 19:46:29
计划特性
星火2.0+
Spark应该同时支持相关和不相关的子查询。详情请参见SubquerySuite。一些例子包括:
select * from l where exists (select * from r where l.a = r.c)
select * from l where not exists (select * from r where l.a = r.c)
select * from l where l.a in (select c from r)
select * from l where a not in (select c from r)不幸的是,目前(Spark2.0)不可能使用DataFrame DSL来表达相同的逻辑。
火花< 2.0
Spark支持FROM子句中的子查询(与Hive <= 0.12相同)。
SELECT col FROM (SELECT * FROM t1 WHERE bar) t2它根本不支持WHERE clause.Generally中的子查询,说到任意子查询(特别是相关子查询),如果不提升到笛卡尔联接,就无法使用Spark来表示。
由于子查询性能在典型的关系系统中通常是一个重要的问题,而且每个子查询都可以使用JOIN表示,所以这里不会失去功能。
发布于 2016-01-31 08:02:58
https://issues.apache.org/jira/browse/SPARK-4226
有一个执行该功能的拉请求。我猜它可能会降落在Spark2.0。
https://stackoverflow.com/questions/33933118
复制相似问题