Spark Sql Dataset获取索引号

时间:2017-08-01 04:27:54

标签: scala apache-spark apache-spark-sql

如果我有这样的案例类:

body {
  width: 100vw;
  height: 100vh;
  margin: 0;
}

我有Person(name:String = null, rank:Integer = null)

假设数据集有5个人对象:

dataset: Dataset[Person]

我希望在按ID排序数据集之后填充Scala中的排名字段。这样数据集就变成了:

Dataset[  Person(name = "Jack",id = 100, rank = null), 
          Person(name = "Mary",id = 400, rank = null),
          Person(name = "Tom",id = 199, rank = null), 
          Person(name = "Linda", id = 55, rank = null),
          Person(name = "Wendy", id = 30, rank = null)]

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您有数据集,则可以使用row_number函数

添加排名列
ds.withColumn("rank", row_number().over(Window.orderBy($"id")))

或者还有排名功能

ds.withColumn("rank", rank().over(Window.orderBy("id")))
  

def row_number():列

     

窗口功能:返回一个从1开始的序号   窗口分区。

希望这有帮助!