Spark | 分组排序

记录下Spark分组排序时遇到的问题,需求问题如下:

当前有HDFS文件数据内容为:

(字段顺序为手机号-phone、用户ID-userId、线路-line、时间戳-clientTimestamp),然后读取HDFS文件内容生成rdd,其中rdd的格式为( (phone,userId,line))

130xxxxxxxx&1980098385910287364&1004&1568528894
130xxxxxxxx&2233727976012209153&1005&1568555149
130xxxxxxxx&2320761066814396420&1002&1568515662
130xxxxxxxx&1956824763490556928&1005&1568538553
130xxxxxxxx&2255034634315076610&1001&1568528871

 

1、使用Spark DataFrame完成分组排序(推荐)

val userLineDF = rdd.map( x=>{((x._2,x._3),1)}).reduceByKey(_+_).map(x=>(x._1._1,x._1._2,x._2)).toDF("userId","line","rideCount")

val dfTop1 = userLineDF.withColumn("rank",row_number().over(Window.partitionBy("userId").orderBy(desc("rideCoun
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值