RDD数据去重(时间连续变化,断面以及客流连续不变的只保留第一条记录)
2018-03-13 09:28
323 查看
先将RDD按断面分组,生成新的RDD
rdd.groupBy(s => (s.station_fore,s.station_back)).map(s=> cleandata(s)).flatMap(s=>s)//flatMap将数组展开,每条数据生成一条记录
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 }
相关文章推荐
- 利用excel的数据有效性记录不随系统时间变化的时间
- mysql删除重复数据只保留id最大一条记录
- mysql查询连续时间数据——无数据补0
- logstash使用webhdfs插件指定输出字段存储数据到hdfs时间分层(还能保留原来数据)
- MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
- 保留表中重复记录中第一行数据,删除其他数据
- 启用mysql日志记录执行过的sql并且开启慢查询记录所有超过慢查询时间的SQL以及未使用索引SQL
- 自动记录数据录入时间不懂得VBA的朋友可以看看
- mysql实现每组取前N条记录的sql,以及后续的组数据量限制
- kkpager的改进,Ajax数据变化但是页码不变的问题
- Oracle查询一批数据,某字段的内容有重复数据,怎样取相同的记录中时间最近的一条
- hibernate 监听器记录数据变化信息
- 雅虎延长保留用户数据时间对我们有什么影响? 推荐
- oracle按时间排序,取得表中第一条数据(数据可能重复)
- Cookie实现记录上一次的登陆时间以及删除Cookie
- Oracle查询重复数据并删除,只保留一条记录
- sql去重复保留距离时间最近的一条数据
- 根据ajax从服务器获取数据的时间和ID,根据最近的时间,显示一个记录重复ID的数字
- mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
- Oracle查询重复数据并删除,只保留一条记录