首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SparkSQL支持子查询吗?

SparkSQL支持子查询吗?
EN

Stack Overflow用户
提问于 2015-11-26 07:49:05
回答 2查看 47.2K关注 0票数 16

我正在shell中运行这个查询,但是它给了我错误,

代码语言:javascript
复制
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),谁能解释我,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-26 19:46:29

计划特性

  • 火花-23945 (Column.isin()应该接受单列DataFrame作为输入)。
  • 火花-18455 (通用支持相关子查询处理)。

星火2.0+

Spark应该同时支持相关和不相关的子查询。详情请参见SubquerySuite。一些例子包括:

代码语言:javascript
复制
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相同)。

代码语言:javascript
复制
SELECT col FROM (SELECT *  FROM t1 WHERE bar) t2

它根本不支持WHERE clause.Generally中的子查询,说到任意子查询(特别是相关子查询),如果不提升到笛卡尔联接,就无法使用Spark来表示。

由于子查询性能在典型的关系系统中通常是一个重要的问题,而且每个子查询都可以使用JOIN表示,所以这里不会失去功能。

票数 42
EN

Stack Overflow用户

发布于 2016-01-31 08:02:58

https://issues.apache.org/jira/browse/SPARK-4226

有一个执行该功能的拉请求。我猜它可能会降落在Spark2.0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33933118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档