运行 相关子查询时出现 sql 错误

spark sql error when running correlated subquery

我 运行 在 Intellij Maven 中的 spark SQL 查询下面 IDE,

SELECT seq_no, 
       amount, 
       (select max(b.amount) 
        from premium b 
        where b.seq_no < a.seq_no) last_high_prem
FROM premium a

出现以下错误,

Exception in thread "main" org.apache.spark.sql.AnalysisException: The correlated scalar subquery can only contain equality predicates: (seq_no#11#32 < seq_no#11);

我了解使用相等运算符的相关查询目前仅在 spark SQL 中有效。有什么方法可以解决这个问题吗?

我知道我们可以做到 hiveql。但是需要在我的本地机器上设置 hadoop 和 hive。 请让我知道如何缓解此问题。

我对 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 短语,但不是针对您提出的确切查询。