运行 相关子查询时出现 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
短语,但不是针对您提出的确切查询。
我 运行 在 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
短语,但不是针对您提出的确切查询。