首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL :带有联合生成错误的SPARK WSO2查询

问SQL :带有联合生成错误的SPARK WSO2查询
EN

Stack Overflow用户
提问于 2016-03-08 01:52:47
回答 2查看 306关注 0票数 1

使用Spark WSO2对SQL执行批处理分析时,尝试执行以下查询。表'First‘、'Middle’和'Third‘需要组合并写入表'All_three’。

代码语言:javascript
复制
INSERT OVERWRITE TABLE All_three 
SELECT SYMBOL, VOLUME FROM First 
UNION 
SELECT SYMBOL, VOLUME FROM Middle 
UNION 
SELECT SYMBOL, VOLUME FROM Third;

执行此查询时,WSO2 DAS上显示以下错误:

代码语言:javascript
复制
ERROR: [1.79] failure: ``limit'' expected but `union' found INSERT OVERWRITE TABLE X1234_All_three SELECT SYMBOL, VOLUME FROM X1234_First UNION SELECT SYMBOL, VOLUME FROM X1234_Middle UNION SELECT SYMBOL, VOLUME FROM X1234_Third ^ 

据我所知,使用LIMIT with UNION并不是必须的。也曾尝试将SELECT查询括在圆括号中,但没有成功。我在这里做错了什么?提前谢谢你!

EN

回答 2

Stack Overflow用户

发布于 2016-04-12 18:22:07

我也有同样的问题。

请确保在每行的末尾有一个空格。

原因是它没有像SSMS或其他查询编辑器那样将\n视为空格。

所以它读取您的查询时不使用空格。因此,它读起来像SELECT * FROM UNION而不像SELECT * FROM First FirstUNION

我的问题已经解决了,我希望这对你也有帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-05-06 19:50:18

您在此处提到的查询存在问题。请按如下所示更改查询。

插入重写表All_three select * from ( SELECT符号,卷从第一个并集选择符号,卷从中间并集选择符号,卷从第三个) temp;

实际上,我们在这里所做的是,将联合结果包装到名为temp的临时数据元素中,并从那里选择所有内容。Spark-SQL解析器在insert查询中只接受单个select元素,并且在select查询的末尾,它需要一个限制(如果可用)。因此,您需要将后续的select语句包装到一个select元素中。希望这能解决你的问题。

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

https://stackoverflow.com/questions/35850546

复制
相关文章

相似问题

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