row_number over ...无界前置和无界后续行之间的行与spark不兼容

时间:2018-05-24 06:13:07

标签: apache-spark exception apache-spark-sql row-number

我的查询类似In [39]: mask = pd.to_numeric(df.Score, errors='coerce').isna() In [40]: s = df.Score.copy() In [41]: df.Score[mask] = df.City In [42]: df.City[mask] = s In [43]: df Out[43]: City Score 0 Istanbul 6.0749 1 Muscat 2.23607 2 Prague 4.38576 3 Shanghai 1.85958 4 Istanbul 6.0749 5 Singapore 5.17054

查询正在hive中工作,但它不能在Spark-SQL和spark中工作(在spark 1.6和2.0中都有效)。

我想知道如何在火花代码中实现这个逻辑 此查询是否有效,在frame与row_number函数之间有行?

1 个答案:

答案 0 :(得分:1)

  • 窗口函数调用的正确语法需要围绕帧定义括号。
  • row_number需要ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW帧,在这种情况下是默认值,因此可以省略。

组合:

row_number() OVER (PARTITION BY foo ORDER BY bar)