我正在Intellij Maven IDE中的spark SQL查询下面运行,
SELECT seq_no,
amount,
(select max(b.amount)
from premium b
where b.seq_no < a.seq_no) last_high_prem
FROM premium a
收到以下错误,
线程“ main”中的异常org.apache.spark.sql.AnalysisException:相关的标量子查询只能包含相等谓词:(seq_no#11#32
我了解使用相等运算符时的相关查询,然后仅在Spark SQL中当前有效。有什么方法可以解决这个问题。
我知道我们可以做到这一点。但是需要在我的本地计算机上设置hadoop和hive。 请让我知道如何缓解该问题。
答案 0 :(得分:2)
我几乎不了解Spark SQL,但在我看来,您的问题出在相关子查询上,在大多数SQL品牌中,此查询都不需要。 Spark确实接受max
函数作为Window Function。
你能做吗
SELECT seq_no,
amount,
max(amount) OVER (ORDER BY seq_no ROWS BETWEEN UNBOUNDED PRECEDING and 1 PRECEDING) AS last_high_prem
FROM premium
注意:您可能还需要一个partition by
短语,而不是您所提出的确切查询。