mysql percent rank_Spark2 Dataset分析函数--排名函数row_number,rank,dense_rank,percent_rank

select gender,

age,

row_number() over(partition by gender order by age) as rowNumber,

rank() over(partition by gender order by age) as ranks,

dense_rank() over(partition by gender order by age) as denseRank,

percent_rank() over(partition by gender order by age) as percentRank

from Affairs

val spark = SparkSession.builder().appName("Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate()

// For implicit conversions like converting RDDs to DataFrames

import spark.implicits._

val dataList: List[(Double, String, Double, Double, String, Double, Double, Double, Double)] = List(

(0, "male", 37, 10, "no", 3, 18, 7, 4),

(0, "female", 27, 4, "no", 4, 14, 6, 4),

(0, "female", 32, 15, "yes", 1, 12, 1, 4),

(0, "male", 57, 15, "yes", 5, 18, 6, 5),

(0, "male", 22, 0.75, "no", 2, 17, 6, 3),

(0, "female", 32, 1.5, "no", 2, 17, 5, 5),

(0, "female", 22, 0.75, "no", 2, 12, 1, 3),

(0, "male", 57, 15, "yes", 2, 14, 4, 4),

(0, "female", 32, 15, "yes", 4, 16, 1, 2),

(0, "male", 22, 1.5, "no", 4, 14, 4, 5),

(0, "male", 37, 15, "yes", 2, 20, 7, 2),

(0, "male", 27, 4, "yes", 4, 18, 6, 4),

(0, "male", 47, 15, "yes", 5, 17, 6, 4),

(0, "female", 22, 1.5, "no", 2, 17, 5, 4),

(0, "female", 27, 4, "no", 4, 14, 5, 4),

(0, "female", 37, 15, "yes", 1, 17, 5, 5),

(0, "female", 37, 15, "yes", 2, 18, 4, 3),

(0, "female", 22, 0.75, "no", 3, 16, 5, 4),

(0, "female", 22, 1.5, "no", 2, 16, 5, 5),

(0, "female", 27, 10, "yes", 2, 14, 1, 5),

(0, "female", 22, 1.5, "no", 2, 16, 5, 5),

(0, "female", 22, 1.5, "no", 2, 16, 5, 5),

(0, "female", 27, 10, "yes", 4, 16, 5, 4),

(0, "female", 32, 10, "yes", 3, 14, 1, 5),

(0, "male", 37, 4, "yes", 2, 20, 6, 4))

val data = dataList.toDF("affairs", "gender", "age", "yearsmarried", "children", "religiousness", "education", "occupation", "rating")

data.printSchema()

// 创建视图

data.createOrReplaceTempView("Affairs")

val s1="row_number() over(partition by gender order by age) as rowNumber,"

val s2="rank() over(partition by gender order by age) as ranks,"

val s3="dense_rank() over(partition by gender order by age) as denseRank,"

val s4="percent_rank() over(partition by gender order by age) as percentRank"

val df8=spark.sql("select gender,age,"+s1+s2+s3+s4+" from Affairs")

df8.show(50)

+------+----+---------+-----+---------+------------------+

|gender| age|rowNumber|ranks|denseRank| percentRank|

+------+----+---------+-----+---------+------------------+

|female|22.0| 1| 1| 1| 0.0|

|female|22.0| 2| 1| 1| 0.0|

|female|22.0| 3| 1| 1| 0.0|

|female|22.0| 4| 1| 1| 0.0|

|female|22.0| 5| 1| 1| 0.0|

|female|22.0| 6| 1| 1| 0.0|

|female|27.0| 7| 7| 2| 0.4|

|female|27.0| 8| 7| 2| 0.4|

|female|27.0| 9| 7| 2| 0.4|

|female|27.0| 10| 7| 2| 0.4|

|female|32.0| 11| 11| 3|0.6666666666666666|

|female|32.0| 12| 11| 3|0.6666666666666666|

|female|32.0| 13| 11| 3|0.6666666666666666|

|female|32.0| 14| 11| 3|0.6666666666666666|

|female|37.0| 15| 15| 4|0.9333333333333333|

|female|37.0| 16| 15| 4|0.9333333333333333|

| male|22.0| 1| 1| 1| 0.0|

| male|22.0| 2| 1| 1| 0.0|

| male|27.0| 3| 3| 2| 0.25|

| male|37.0| 4| 4| 3| 0.375|

| male|37.0| 5| 4| 3| 0.375|

| male|37.0| 6| 4| 3| 0.375|

| male|47.0| 7| 7| 4| 0.75|

| male|57.0| 8| 8| 5| 0.875|

| male|57.0| 9| 8| 5| 0.875|

+------+----+---------+-----+---------+------------------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值