java – 在Spark SQL中的rank()函数用法

需要一些使用rank()的指针

我从数据集中提取了一个列…需要进行排名.

Dataset<Row> inputCol= inputDataset.apply("Colname");    
Dataset<Row>  DSColAwithIndex=inputDSAAcolonly.withColumn("df1Rank", rank());

DSColAwithIndex.show();

我可以对列进行排序,然后附加索引列以获得排名……但对已知语法和rank()的使用感到好奇

最佳答案 需要为rank()指定窗口规范

val w = org.apache.spark.sql.expressions.Window.orderBy("date") //some spec    

val leadDf = inputDSAAcolonly.withColumn("df1Rank", rank().over(w))

编辑:Java版本的答案,作为使用Java的OP

import org.apache.spark.sql.expressions.WindowSpec; 
WindowSpec w = org.apache.spark.sql.expressions.Window.orderBy(colName);
Dataset<Row> leadDf = inputDSAAcolonly.withColumn("df1Rank", rank().over(w));
点赞