RDD数据去重(时间连续变化,断面以及客流连续不变的只保留第一条记录)

 

先将RDD按断面分组,生成新的RDD

rdd.groupBy(s => (s.station_fore,s.station_back)).map(s=> cleandata(s)).flatMap(s=>s)//flatMap将数组展开,每条数据生成一条记录
def cleandata(data:((String,String),Iterable[sample])):Array[sample]={
  val nt = ArrayBuffer[sample]()
  val t2 = data._2.toArray.sortBy(_.deal_time)//按时间排序
  var temp = t2(0)
  nt+=t2(0)
  for (i<- 0 until t2.length){
    if (temp.flow != t2(i).flow){
      temp = t2(i)
      nt+=temp
    }
  }
  nt.toArray
}
 
case class sample(station_fore:String,station_back:String,flow:Long,deal_time:String){
  override def toString = station_fore+","+station_back+","+flow+","+deal_time
}
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值