Spark-SQL在窗口函数中崩溃

时间:2018-10-12 21:02:16

标签: apache-spark apache-spark-sql

使用Spark 2.3.2和Spark-SQL,以下查询'b'失败:

{{link}}

这非常奇怪,但这是合法的SQL查询:

  • 我正在定义一个列,该列是开窗函数的结果
  • 然后取平均值

通过使用中间列来执行此操作是可行的,但是在单个表达式中执行会导致催化剂崩溃并导致堆栈溢出:

var link = "http://www." + message[i];
string += '<span style="font-weight:bold">' + i + '</span>: <a href="' + link + '">' + link + '</a><br>';

这是一个已知问题吗? 我不是100%肯定我的查询正确无误,但它至少应该不会崩溃催化剂,因为它甚至在我无法评估查询之前就崩溃了

1 个答案:

答案 0 :(得分:0)

avg()以列名作为参数,但是rank()正在传递实际的列数据,因此找不到列名。

它与:

dataset.select( rank().over(Window.partitionBy("age").orderBy("size")).as("rank_XX") 
     ).
     agg(avg("rank_XX")).show() 

输出:

+------------+                                                                  
|avg(rank_XX)|
+------------+
|         1.0|
+------------+