spark SQL中的rank()函数用法

时间:2017-03-06 04:47:26

标签: java apache-spark apache-spark-sql window-functions rank

在使用rank()

时需要一些指示

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

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

DSColAwithIndex.show();

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

2 个答案:

答案 0 :(得分:2)

需要为Window

指定

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));

答案 1 :(得分:0)

我一直在寻找这个,将排名应用于Java中的数据框。

使用上面评论中提供的答案,

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));

为我工作, 谢谢 高拉夫。