spark分组排序提取前N个值 20C

求教各位大神:
本人用scalas+spark开发,用RDD实现以下需求时遇到困难!
数据:
用户 位置 天数
user1 L1 28
user1 L2 20
user1 L3 15
user2 L1 30
user2 L2 15
user3 L5 3
user3 L6 18
user4 L7 4
通过spark RDD怎样实现按用户分组提取每个用户天数最大的位置

希望数据结果:
RDD:
array((user1,L1,28),(user2,L1,30),(user3 , L6,18),(user4,,7 4))
这里主体是根据用户分组计算最大天数,并把位置带出来,研究半天无果,求大神指教

4个回答

您发的链接我看了 只能算出用户和最大天数RDD(user,daycount),位置提不出来!!

谢谢 大家 问题我找到解决办法了:
import org.apache.spark.{SparkConf, SparkContext}

val rdd3 = sc.makeRDD(Array(("a","user1","25"),("b","user1","27"),("c","user1","12"),("d","user2","23"),("e","user2","1"),("a","user3","30")),2).map(x => {
val lac = x._1
val user = x._2
val cnt = x._3
(user.toString,lac,cnt.toInt)
}).take(6)

val topK=rdd3.groupBy(item=>(item._1)).map(subG=>{
val (usera) = subG._1
val dayTop1=subG._2.toList.sortBy(_._3)(Ordering.Int.reverse).take(1).map(item=>item._2+","+item._1+","+item._3)
(usera,dayTop1)
})

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
分组并排序取前N
NULL 博文链接:https://61308519.iteye.com/blog/2305930
Hive中分组取前N个值的实现-row_number()
背景 假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩。 这个就是典型在分组取Top N的需求。   解决思路 对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科,成绩做order by排序,然后对排序后的成绩,执行自定义函数row_number(),必须带一个或者多个列参数,如ROW_NUMBER(col1, ....),它的作用是按指定的...
Mysql取分组后前N个值
表结构如下: create table `test_group_limit` ( `row_id` varchar (33), `id` int (11), `num` bigint (11), `log` varchar (33) ); insert into `test_group_limit` (`row_id`, `id`, `num`, `log`) values('1','
Spark SQL函数之分组排序
需求:根据class分组对组内的age进行排序 原表 结果 Spark  SQL : SELECT name,  age,  class,  row_number() over(partition by age order byclass) as RE FROM A 默认会把同一分组的age最大放到第一位,并且设置RE=1,以此类推 注意事项 :
spark take获取前n个元素
take和 collect操作类似,都是从远程集群上获取元素,只是collect操作获取的所有数据,而take操作是获取前n个元素 直接上代码: public static void myTake(){         SparkConf conf=new SparkConf()         .setMaster("local")         .setAppName("myTak
分组取前N记录
问题:有表 如下,要求取出各班前两名(允许并列第二)rnTable1rn+----+------+------+-----+rn| id |SName |ClsNo |Score|rn+----+------+------+-----+rn| 1 |AAAA | C1 | 67 |rn| 2 |BBBB | C1 | 55 |rn| 3 |CCCC | C1 | 67 |rn| 4 |DDDD | C1 | 65 |rn| 5 |EEEE | C1 | 95 |rn| 6 |FFFF | C2 | 57 |rn| 7 |GGGG | C2 | 87 |rn| 8 |HHHH | C2 | 74 |rn| 9 |IIII | C2 | 52 |rn| 10 |JJJJ | C2 | 81 |rn| 11 |KKKK | C2 | 67 |rn| 12 |LLLL | C2 | 66 |rn| 13 |MMMM | C2 | 63 |rn| 14 |NNNN | C3 | 99 |rn| 15 |OOOO | C3 | 50 |rn| 16 |PPPP | C3 | 59 |rn| 17 |QQQQ | C3 | 66 |rn| 18 |RRRR | C3 | 76 |rn| 19 |SSSS | C3 | 50 |rn| 20 |TTTT | C3 | 50 |rn| 21 |UUUU | C3 | 64 |rn| 22 |VVVV | C3 | 74 |rn+----+------+------+-----+rn结果如下rn+----+------+------+-----+rn| id |SName |ClsNo |Score|rn+----+------+------+-----+rn| 5 |EEEE | C1 | 95 |rn| 1 |AAAA | C1 | 67 |rn| 3 |CCCC | C1 | 67 |rn| 7 |GGGG | C2 | 87 |rn| 10 |JJJJ | C2 | 81 |rn| 14 |NNNN | C3 | 99 |rn| 18 |RRRR | C3 | 76 |rn+----+------+------+-----+rnrnrnselect *rnfrom Table1 arnwhere 2>(select count(*) from Table1 where ClsNo=a.ClsNo and Score>a.Score)rnorder by a.ClsNo,a.Score descrnrn这条SQL,没看懂是什么意思,谁可以帮忙解答一下?谢谢。rnrn
spark 并行计算 前n项和
在单线程计算中前n项和计算一直没有障碍,随着数据量的膨胀,单线程计算已经无法满足数据计算。计算逐渐被迁移到spark或者hadoop集群上并行计算,但是无论spark还是hadoop并行计算前n项和一直是一个痛点,只能做到每个结点或者容器上的前N项和,却无法做到计算全局前N项和。      现提供一种解决方案,希望大家多多指正。计算过程需要两次便利全部数据。第一次遍历计算每个容器中数据加和结果,
Scala编写Spark分组后排序取TOP n的代码
1、首先来练习最简单的一种情况,数据如下所示,我们要先进行分组然后取每组中的最大值 1 89 2 100 2 92 1 80 1 90 具体代码: //两列数据 def top_1(): Unit = { val sc = TransformationOperation.getSc("groupByKey2Top") val lines = sc.textFile(...
mysql 根据一个字段分组 并显示每个分组的前N个值(从大到小排)
表大概这个样子rngid levelrn1 9rn1 8rn1 9rn1 5rn1 6rn3 5rn4 4rn5 3rn3 5rn4 3rn5 4rn3 8rn5 9rn6 2rn假设N是2 那就需求显示成大致这样rngid levelrn1 9rn1 9rn3 8rn3 5rn4 4rn4 3rn5 9rn5 4rn6 2rnrngid的不连续的 level 是很多重复的。rnrn看人家在sql server里面用row number做的。rnrn刚接触数据库没一个月呢。小白求教
sql分组并提取每组的前一条,按照时间排序
select * from ( select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组 , * -- 所需显示的字段 from 表 ) as T where T.rownum = 1 对每组的数...
Oracle分组排序取各组前N条数据的问题
对经常使用Oracle,Mysql数据库的开发者来说,分组和排序是经常的事情, 如果是分组里面取前N条呢,如下处理: 假设表test里面有字段a,b,分组用a字段,排序用b字段,取每组前n条,如下处理 select * from ( SELECT ROW_NUMBER()OVER(PARTITION BY a ORDER BY b) RN,T.* FROM test T) where RN...
MySQL分组排序查前N条数据
学生成绩表:score 要查询出每个学生考的最好的三次记录 SELECT a.*, b.rownum FROM score a LEFT JOIN ( SELECT id, CASE WHEN @mid = student THEN @ROW :=@ROW + 1 ELSE @ROW := 1 END rownum, @mid := student mid FROM ( SELECT
SQL查询如何先取前n个记录,再对这前n个记录排序
比如查询s表的前5个记录,并根据k列的值进行降序排序,如果用下面语句:rnselect top 5 *rnfrom srnorder by k DESCrn其查询结果是先把全部记录排序后再选前5个记录rn所以标题所说操作要如何实现,我也试过先在第一个视图选取前n个,再在第二个视图对第一个视图进行排序,也是同样的结果
Linq分组及排序,取前N条记录
Linq分组及排序,取前N条记录
Hive和MySQL分组排序取前n条记录
– title: hive分组排序 date: 2017-05-23 17:04:00 categories: [技术,Hive] tags: Hadoop,Hive,大数据 原文地址:http://chenxiaoqiong.com/articles/hiverownum/
sybase iq分组排序取前N名
营业部客户资产前5客户语句 [code="sql"]select * from ( select * from #ADO_TEMP )t1 where exists ( select count(1) from #ADO_TEMP t2 where t1.营业部=t2.营业部 and t1.总资产>t2.总资产 having count(1)...
Python-MySQL抽取表中每个分组的前N个数据
在超大规模数据处理时,有时候需要按分组取出一部分数据,作为整体数据的参考。 例如,有表table_1,按column_1可以划分为200组,现在我们希望从这200组中每组各取出10条记录作为代表。 我们可以通过以下Python语句操作MySQL,来实现此功能: import mysql.connector conn = mysql.connector.connect(host = '127.0.0...
mysql查询分组取每组前n个
SELECT * FROM(rnSELECT CASE 分组字段 WHEN @b THEN @a:=@a+1 ELSE @a:=0 END AS ID,@b:=分组字段 FROM 表 ORDER BY 分组字段,排序字段) AS TrnWHERE T.ID < n;
spark对分组后value值进行排序(JAVA)
maven: org.apache.spark spark-core_2.10 1.6.0 groupsort.txt: spark 100 storm 90 kafka 75 hadoop 60 zookeeper 100 impala 80 hbase 65 hive 90 flume 95 elasticsearch 100 sp
Spark:Java实现分组取Top N
1、源数据如下,取出每班成绩的前三名class1 98 class2 90 class2 92 class1 96 class1 100 class2 89 class2 68 class1 81 class2 90 2.实现代码package cn.spark.study.core;import java.util.ArrayList; import java.util.Arrays; impor
斐波那契数列的前n项值
Description 输入n,求斐波那契数列前n项的值。斐波那契数列规律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55…,从第三项开始,每一项都是前面两项的和。 Input 输入正整数n。 Output 输出斐波那契数列的前n项值 Sample Input 1 3 5 8 Sample Output 1 1 1 2 1 1 2 3 5 1 1 2 3 5 8 13 21 ...
按分组提取前95%数据
CI CDMASERVINGONEWAYDELAYrn31391 17rn31204 20rn31352 20rn30192 27rn30333 22rn31022 23rn32242 19rn33131 398rn32241 38rn30071 67rn48071 3rn35041 50rn33073 8rn35041 50rn31391 16rn31204 19rn31352 23rn.....rnrn很多条记录(数目不定),如何按CI分组,提取CDMASERVINGONEWAYDELAY前95%的记录,请高手指教,非常感谢!
分组取前N条的 SQL语句
  select * from sys_menu a where a.id in (  select id from sys_menu b where a.parent_id=b.parent_id order by b.sort_no desc limit 2); 此sql作用:按parent_id分组,取sort_no最大了前两条数据 parent_id:为分组列 sort_no :排...
前n个质数的乘积
问题描述   Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出 import java.util.Scanner; public class ALGO51 { public s...
mysql 分组取前N记录
要求取出各班前两名(允许并列第二)  create table Table1 (id int auto_increment primary key, SName varchar(50),ClsNo varchar(20), Score int(3));  insert into Table1(SName,ClsNo,Score) values('AAAA','C1',67),('BBB
如何只取分组的前N行
表是id,name,pricern我要按name分组,然后取每个name的price>100的前50行显示
python字典值排序并取出前n个key值
今天在写一个算法的过程中,得到了一个类似下面的字典: {'user1':0.456,'user2':0.999,'user3':0.789,user:'0.234'} 想要获取字典里value值前3的key,就产生了如下代码 直接贴代码: def order_dict(dicts, n): result = [] p = sorted([(k, v) for k, v in...
group by分组查前n条记录
productrn======================================================rnid_______userid________titlern1________a_____________xxxxxrn2________a_____________xxxxxrn3________a_____________xxxxxrn4________b_____________xxxxxrn5________b_____________xxxxxrn6________b_____________xxxxxrn7________c_____________xxxxxrn8________c_____________xxxxxrn9________c_____________xxxxxrn10_______c_____________xxxxxrn11_______d_____________xxxxxrn=======================================================rn要求:输出用户a、b、c的前3条记录。rn现在我这样写:rn(select * from product where userid='a' order by id limit 3)rnunion (select * from product where userid='b' order by id limit 3)rnunion (select * from product where userid='b' order by id limit 3)rn...rnrn但当userid达到几十个时,这个查询效率极低。有什么查询能一次性输出要求的记录?
分组 取前N条,在行转列
shop店铺表rnID int IDrnShopName varchar 店铺名rnshopCreidt int 店铺信誉rnshopTypeid int 店铺类别rn1 aa 12 1rn2 bb 13 1rn3 cc 14 1rn4 dd 15 1rn5 aaa 11 2rn6 bbb 13 2rn7 ccc 14 2rn8 eee 16 2rnshopType店铺类型表rnIDrnshoptypeName 类型名rn1 服装rn2 器具rnrn要求取出每个分类里面 按照shopCreidt降序取前2个rnrn显示结果rn服装 dd ccrn器具 eee ccc
Spark的Dataset操作(三)-分组,聚合,排序
spark sql的分组聚合操作,包括groupBy, agg, count, max, avg, sort, orderBy等函数示例
spark中使用groupByKey进行分组排序
任务需求:已知RDD[(query:String, item_id:String, imp:Int, clk:Int)],要求找到每个query对应的点击最多的前2个item_id,即:按照query分组,并按照clk降序排序,每组取前两个。 例如: (连衣裙,1234,  22,  13) (牛仔裤,2768,  34,  7) (连衣裙,1673,45,  9) (衬衣,3468, ...
Spark Java 分组排序取TopN
1.输入c1 85 c2 77 c3 88 c1 22 c1 66 c3 95 c3 54 c2 91 c2 66 c1 54 c1 65 c2 41 c4 652.代码实现import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.
Spark RDD 二次分组排序取TopK
基本需求 用spark求出每个院系每个班每个专业前3名。 样本数据 数据格式:id,studentId,language,math,english,classId,departmentId,即id,学号,语文,数学,外语,班级,院系 1,111,68,69,90,1班,经济系 2,112,73,80,96,1班,经济系 3,113,90,74,75,1班,经济系 4,114,8...
Hadoop、Spark(Java、scala)实现分组、排序
  1. MapReduce实现分组、排序 1.1分组 //在MapReduce 主类设置自定义分组Class job.setGroupingComparatorClass((Class&amp;lt;? extends RawComparator&amp;gt; cls); //实例 job.setGroupingComparatorClass(S1apEnbidGroupingComparator....
Spark Sql 二次分组排序取TopK
基本需求 用spark sql求出每个院系每个班每个专业前3名 样本数据 数据格式:id,studentId,language,math,english,classId,departmentId,即id,学号,语文,数学,外语,班级,院系 1,111,68,69,90,1班,经济系 2,112,73,80,96,1班,经济系 3,113,90,74,75,1班,经济系 4,11...
Spark RDD去掉前n行数据
@羲凡——只为了更好的活着 Spark RDD去掉前n行 Q:在处理一些数据的时候会遇到不想要的前n行,该怎么处理? A:使用 rdd 的 zipWithIndex 算子 rdd.zipWithIndex().filter(_._2&amp;amp;gt;=n).keys // n换成对应的第几列即可 ======================================================...
oracle 数据怎么分组排序提取
比如有很多坐标(1,2)(3,4)(2,3)(1,2)(3,5)(2,6)(3,1)在数据表中是以(x,y)的形式存储的,要让他分组成:(1,2)(1,2);(2,3)(2,6);(3,4)(3,5)(3,1)这三组,并一次从里面提取从新分组为:(1,2)(2,3)(3,4);(1,2)(2,6);(3,5);(3,1)。这样一个过程怎么实现啊?rn请求大神解决,谢谢!
hive分组排序 取top N
pig可以轻松获取TOP n。书上有例子hive中比较麻烦,没有直接实现的函数,可以写udf实现。还有个比较简单的实现方法: 用row_number,生成排名序列号。然后外部分组后按这个序列号多虑,样例代码如下 select a.* from( select 品牌,渠道,档期,count/sum/其它() as num row_number() over (partition by 品
mybatis的分组排序取前几条数据
分组使用:GROUP BY 单个:GROUP BY 列名 多个:GROUP BY 列名1,列名2 排序使用:ORDER BY 单个:ORDER BY 列名 多个:ORDER BY 列名1,列名2 取前几条数据: limit 0,3,从第一条取,取三条 Limit 1,3 从第2条开始取,取3条 ...
sql分组排序取top n
数据库查询*分组排序 要求:按照课程分组,查找每个课程最高的两个成绩。 数据文件如下: 第一列no为学号,第二列course为课程,第三列score为分数 mysql> select * from lesson; +-------+---------+-------+ | no | course | score | +-------+---------+-------+ | N01
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview

相似问题

2
spark submit 提交集群任务后,spark Web UI界面不显示,但是有4040界面,显示local模式
1
spark shell在存运算结果到hdfs时报java.io.IOException: Not a file: hdfs://mini1:9000/spark/res
2
在Java web中怎么提交一个spark job任务?
2
为什么Spark只会惰性计算RDD?
1
spark on yarn 8088界面只有一个程序是Running状态,其他都是ACCEPTED状态
4
spark--java.lang.ArrayIndexOutOfBoundsException: 10582
1
spark的dataframe中如何提取某一列数据的类型做判断?
2
可否让spark算子执行到某一步时,通过某些控制条件,让整个spark程序停止,或者在那一步保存结果到文件?
1
spark sql如何执行delete
0
spark-shell --master spark://ip:7337 的方式运行 报错
1
pycharm 执行有关spark代码出现错误
0
spark任务spark-submit集群运行报错。
1
spark提交任务 cassadra报错,guava版本低于16。0.1,但是检查jar包是19.0的spark本地local模式跑没问题
0
在kerberos环境下使用spark2访问hive报错
1
Spark 感觉任务都集中在了某一个Task上,最终报executor lost failure,执行失败。
0
spark 任务执行时间长,最终卡挂了。
0
在Java中如何使用spark解析邮件
1
请问诸如k-means等大数据分析,在spark上的读取机制以及如何进行存储部署的?
0
我用DJI SPARK 飞的倾斜摄影照片通过contextcapture 空三处理后没有坐标系
1
请问使用spark的时候,如果使用高性能64核高内存的阿里云服务器,用哪种模式运行比较好?