scala引发了如何获得最新一天的记录
发布时间:2020-12-16 18:18:49 所属栏目:安全 来源:网络整理
导读:data="""user date item1 item21 2015-12-01 14 5.61 2015-12-01 10 0.61 2015-12-02 8 9.41 2015-12-02 90 1.32 2015-12-01 30 0.32 2015-12-01 89 1.22 2015-12-30 70 1.92 2015-12-31 20 2.53 2015-12-01 19 9.33 2015-12-01 40 2.33 2015-12-02 13 1.43
data= """ user date item1 item2 1 2015-12-01 14 5.6 1 2015-12-01 10 0.6 1 2015-12-02 8 9.4 1 2015-12-02 90 1.3 2 2015-12-01 30 0.3 2 2015-12-01 89 1.2 2 2015-12-30 70 1.9 2 2015-12-31 20 2.5 3 2015-12-01 19 9.3 3 2015-12-01 40 2.3 3 2015-12-02 13 1.4 3 2015-12-02 50 1.0 3 2015-12-02 19 7.8 """ 如果我有上面的数据,我怎样才能得到每个用户的最新一天的记录? val user = data.map{ case(user,date,item1,item2)=>((user,date),Array(item1,item2)) }.groupByKey() 然后我不知道如何处理它.谁能给我一些建议?非常感谢:) 更新: 我改变了我的数据,现在用户在最近一天有几条记录,我希望得到所有这些记录.谢谢:) 第二次更新: 我想得到的结果是: user1 (2015-12-02,Array(8,9.4),Array(90,1.3)) user2 (2015-12-31,Array(20,2.5)) user3 (2015-12-02,Array(13,1.4),Array(50,1.0),Array(19,7,8)) 现在我写了一些代码: val data2=data.trim.split("n").map(_split("s+")).map{ f=>{(f(0),ArrayBuffer( f(1),f(2).toInt,f(3).toDouble) )} } val data3 = sc.parallelize(data2) data3.reduceByKey((x,y)=> if(x(0).toString.compareTo(y(0).toString)>=0) x++=y else y).foreach(println) 结果是: (2,ArrayBuffer(2015-12-31,20,2.5)) (1,ArrayBuffer(2015-12-02,8,9.4,2015-12-02,90,1.3)) (3,13,1.4,50,1.0,19,7.8)) 有什么可以改善它吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |