使用Spark WSO2对SQL执行批处理分析时,尝试执行以下查询。表'First‘、'Middle’和'Third‘需要组合并写入表'All_three’。
INSERT OVERWRITE TABLE All_three
SELECT SYMBOL, VOLUME FROM First
UNION
SELECT SYMBOL, VOLUME FROM Middle
UNION
SELECT SYMBOL, VOLUME FROM Third;执行此查询时,WSO2 DAS上显示以下错误:
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查询括在圆括号中,但没有成功。我在这里做错了什么?提前谢谢你!
发布于 2016-04-12 18:22:07
我也有同样的问题。
请确保在每行的末尾有一个空格。
原因是它没有像SSMS或其他查询编辑器那样将\n视为空格。
所以它读取您的查询时不使用空格。因此,它读起来像SELECT * FROM UNION而不像SELECT * FROM First FirstUNION
我的问题已经解决了,我希望这对你也有帮助。
发布于 2016-05-06 19:50:18
您在此处提到的查询存在问题。请按如下所示更改查询。
插入重写表All_three select * from ( SELECT符号,卷从第一个并集选择符号,卷从中间并集选择符号,卷从第三个) temp;
实际上,我们在这里所做的是,将联合结果包装到名为temp的临时数据元素中,并从那里选择所有内容。Spark-SQL解析器在insert查询中只接受单个select元素,并且在select查询的末尾,它需要一个限制(如果可用)。因此,您需要将后续的select语句包装到一个select元素中。希望这能解决你的问题。
https://stackoverflow.com/questions/35850546
复制相似问题