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))
这里主体是根据用户分组计算最大天数,并把位置带出来,研究半天无果,求大神指教

0

4个回答

0

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

0

谢谢 大家 问题我找到解决办法了:
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)
})

0
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spark中实现分组取TOP N (Scala版本)
1、源数据如下,取出每班成绩的前三名nclass1 98nclass2 90nclass2 92nclass1 96nclass1 100nclass2 89nclass2 68nclass1 81nclass2 90nn2、实现过程npackage Basicnnimport org.apache.spark.{SparkConf, SparkContext}
Scala编写Spark分组后排序取TOP n的代码
1、首先来练习最简单的一种情况,数据如下所示,我们要先进行分组然后取每组中的最大值nnn1 89n2 100n2 92n1 80n1 90nnn具体代码:nnn//两列数据n def top_1(): Unit = {n val sc = TransformationOperation.getSc("groupByKey2Top")n val lines = sc.textFile(...
使用Spark编程之分组排序取前3名----java代码实现
package cn.spark.study.core;nnimport java.util.Arrays;nimport java.util.Iterator;nnimport org.apache.spark.SparkConf;nimport org.apache.spark.api.java.JavaPairRDD;nimport org.apache.spark.api.java.Jav...
Spark:Java实现分组取Top N
1、源数据如下,取出每班成绩的前三名class1 98nclass2 90nclass2 92nclass1 96nclass1 100nclass2 89nclass2 68nclass1 81nclass2 90n2.实现代码package cn.spark.study.core;import java.util.ArrayList;nimport java.util.Arrays;nimpor
Spark实现分组取 top N 示例 —— Scala版
主要步骤:nn加载集合生成RDD(textFile)n 对RDD进行转换,将要排序的属性进行分离,生成新的RDD(map)n 对键进行分组,并在分组内基于第二步分离出的属性进行排序,并取排序结果的 top N (groupByKey,map)nnpackage rddDemo.examplesnnimport org.apache.spark.{SparkConf, SparkContext}nn...
Spark RDD 二次分组排序取TopK
基本需求nn用spark求出每个院系每个班每个专业前3名。nnnnn样本数据nn数据格式:id,studentId,language,math,english,classId,departmentId,即id,学号,语文,数学,外语,班级,院系nnnnn1,111,68,69,90,1班,经济系n2,112,73,80,96,1班,经济系n3,113,90,74,75,1班,经济系n4,114,8...
Spark核心编程-分组取topN
案例需求n对每个班级内的学生成绩,取出前3名。(分组取topN)
mysql 分组排序 取第N条全部记录 同时存在条件筛选
1.首先利用条件筛选出基本数据SELECT * from test where columna = 'xxx' AND columnb = 'xxx' and ......2.对基本数据分组并利用SUBSTRING_INDEX和GROUP_CONCAT函数取出需要的字段SELECT tab1.columnc, tab1.columnd, tab1.columne,SUBSTRING_INDEX(G...
Spark Sql 二次分组排序取TopK
基本需求nn用spark sql求出每个院系每个班每个专业前3名nnnnn样本数据nn数据格式:id,studentId,language,math,english,classId,departmentId,即id,学号,语文,数学,外语,班级,院系nnnnn1,111,68,69,90,1班,经济系n2,112,73,80,96,1班,经济系n3,113,90,74,75,1班,经济系n4,11...
Hive和MySQL分组排序取前n条记录
– ntitle: hive分组排序 ndate: 2017-05-23 17:04:00 ncategories: [技术,Hive]nntags: Hadoop,Hive,大数据nn原文地址:http://chenxiaoqiong.com/articles/hiverownum/
[Spark应用]-- 实现分组取topN
一、文本格式nnnclass1 90nclass2 56nclass1 87nclass1 76nclass2 88nclass1 95nclass1 74nclass2 87nclass2 67nclass2 77nn二、直接献上代码nnnpackage com.scalannnnimport org.apache.spark.SparkConfnimport org.apache.spark....
pandas 分组计数 取出前n条记录
pandas 分组计数 取出前n条记录nn总的来说,两行代码即可搞定。nntest_data.groupby('release_year')['genre'].value_counts()nn# output,结果为 Seriesnrelease_year genre n1960 Drama 13n Act...
sql语句分组查询排序后取出前n条记录
1.sql语句分组排序后取出前n条记录n(SELECTn *nFROMn (n SELECTn "row_number" () OVER (n PARTITION BY mmsin ORDER BYn orginal_in_draught DESCn ) AS rid,n mmsi,n orginal_in_draughtn FROMn shipping...
Spark分组取TopN
这篇文章主要介绍在Spark中如何分组取TopN元素的两种方法:nn第一种方法基于Spark SQL的窗口函数实现,n 第二种方法基于原生的RDD接口实现。n构造数据nn首先我们构造一份班级的成绩数据,这份数据有三列组成,第一列是考试科目category,第二列是学生的名字name,第三列是学生的成绩。如下:nnnval df = spark.createDataFrame(Seq(n  ("A"...
spark学习记录(七、二次排序和分组取TopN问题)
1.二次排序nn例题:将两列数字按第一列升序,如果第一列相同,则第二列升序排列nn数据文件:https://download.csdn.net/download/qq_33283652/10894807nn将数据封装成对象,对对象进行排序,然后取出valuennnpublic class SecondSortKey implements Serializable, Comparable<Se...
Linq分组及排序,取前N条记录
Linq分组及排序,取前N条记录
pyspark 分组取前几个(已解决)
pyspark 怎样根据user_id和item_id分组,然后去到时间最新的前两个数据?????rnrn
spark小应用二:分组分数排序(SCALA)
需求: n1)按照第一个字段进行分组 n2)对分组中的第二个字段进行排序(降序) n3)获取每个分组Top Key(比如获取前三个值) n数据:aa 78nbb 98naa 80ncc 98naa 69ncc 87nbb 97ncc 86naa 97nbb 78nbb 34ncc 85nbb 92ncc 72nbb 33nbb 231、按照第一个字段进行分组val rdd = sc.textFile
sql分组排序取top n
数据库查询*分组排序n要求:按照课程分组,查找每个课程最高的两个成绩。n数据文件如下:n第一列no为学号,第二列course为课程,第三列score为分数nmysql> select * from lesson;n+-------+---------+-------+n| no | course | score |n+-------+---------+-------+n| N01
Spark取出(Key,Value)型数据中Value值为前n条数据
Spark对(Key,Value)型数据进行排序,并取出Value值为前n的数据
[Spark基础]-- 获取前3个最大值
一、文本内容nnn3n5n6n7n1n4n5n6n9n0n3nn二、代码实现nnnpackage com.scalannnnimport org.apache.spark.SparkConfnimport org.apache.spark.SparkContextnimport org.apache.spark.HashPartitionern/**n * scala实现获取单列数据的前3个最高值...
分组数据后取每组的前N条的几种方法
    面试java软件开发,今天第二天了,连着面试四家,都不太理想,今下午又栽到sql上了,好久没写sql了。呜呼,以记之。    员工表:员工,部门,工资    要求:查询出各部门工资最高的十个人。    以前经常写这样的sql,时间久不写,完全不会了,忍着回忆到现在,只记得    (1).有group by 的select 必须是聚合函数或是goup by的字段    (2)应该先order...
Oracle 以某字段分组,以某字段排序,取前几条
有事你发现group by查询的时候如果想显示不分组的字段不好写,必须跟着group by后面才能能...,利用分区可以实现不用既有group by的效果又可以显示不用分组的字段...(分区实现)sql如下:select * from (select 表.*, row_number() over(partition by 分组字段 order by 排序字段 desc) rnnfrom 表) w...
Mysql分组统计、排序、取前N条记录解决方案
今日根据项目需求,需要在mysql中解决记录的分组统计、排序,并抽取前10条记录的功能。
numpy对向量进行排序,输出最大的前几位
a=np.array([1,12,13,14,5,6,7,8])nnargsort_a =np.argsort(a)nnprint("argsort_a,从小到大的index:",argsort_a)ne= argsort_a[::-1]nprint("最大的5位的index:",e[:5])nn输出:nargsort_a,从小到大的index: [0 4 5 6 7 1 2 3]n最大的5位的i...
python字典值排序并取出前n个key值
今天在写一个算法的过程中,得到了一个类似下面的字典:nn{'user1':0.456,'user2':0.999,'user3':0.789,user:'0.234'}nn想要获取字典里value值前3的key,就产生了如下代码 n直接贴代码:nndef order_dict(dicts, n):n result = []n p = sorted([(k, v) for k, v in...
Spark排序算法!! 使用java开发 自定义key值 进行二次排序 深入解析!
Spark使用JAVA开发的二次排序rn【数据文件Input】rn2 3rn 4 1rn 3 2rn 4 3rn 8 7rn 2 1rn【运行结果Output】rn2 1rn 2 3rn 3 2rn 4 1rn 4 3rn 8 7rn【源代码文件】SecondaySortApp.java SecondarySortKey.javarn rnclassSecondarySort  :rn1、读入每行
hive分组排序 取top N
pig可以轻松获取TOP n。书上有例子hive中比较麻烦,没有直接实现的函数,可以写udf实现。还有个比较简单的实现方法:n用row_number,生成排名序列号。然后外部分组后按这个序列号多虑,样例代码如下nselect a.*nfrom( n select 品牌,渠道,档期,count/sum/其它() as num row_number() over (partition by 品
Oracle分组查询取每组排序后的前N条记录
项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.comn建个测试表test_abc,如图:nnnnnn要求查询出按B字段进行分组,每组取C值最大的前3位。n查询sql为 :nselect * from (nSELECT b,c,row_number() OVE
Spark SQL函数之分组排序
需求:根据class分组对组内的age进行排序rnrn原表rnrnrn结果rnrnrnSpark  SQL :rnSELECT name,  age,  class,  row_number() over(partition by agern order byclass) as RErn FROM Arnrn默认会把同一分组的age最大放到第一位,并且设置RE=1,以此类推rnrn注意事项 :rn
使用Spark core和SparkSQL的窗口函数分别实现分组取topN的操作
在spark 1.4及以上版本中,针对sparkSQL,添加了很多新的函数,进一步扩展了SparkSQL对数据的处理能力。nn本篇介绍一个强大的窗口函数 row_number()函数,常用于对数据进行分组并取每个分组中的TopN数据。nn示例数据如下:nclass1 90nclass2 56nclass1 87nclass1 76nclass2 88nclass1 95nclass1 7
spark中使用groupByKey进行分组排序
任务需求:已知RDD[(query:String, item_id:String, imp:Int, clk:Int)],要求找到每个query对应的点击最多的前2个item_id,即:按照query分组,并按照clk降序排序,每组取前两个。nn例如:nn(连衣裙,1234,  22,  13)nn(牛仔裤,2768,  34,  7)nn(连衣裙,1673,45,  9)nn(衬衣,3468, ...
pyspark之分组排序
import pyspark.sql.functions as fnnfrom pyspark.sql import Windownndf.withColumn("row_number", fn.row_number().over(Window.partitionBy("id").orderBy(df["pt"].desc()))).show()nnn
postgresql分类排序后取某一类记录的前n条
使用rank over对分类后的column进行排序:SELECT *, rank() OVER (PARTITION BY 分类列1,分类列2,分类列3 ORDER BY 排序列 DESC) as rank_rown FROM table1这样得到了一个table1全表+rank_row列的新记录集,然后:select * from (上文的记录集) where rank_row
spark take获取前n个元素
take和 collect操作类似,都是从远程集群上获取元素,只是collect操作获取的所有数据,而take操作是获取前n个元素rn直接上代码:rnpublic static void myTake(){rn        SparkConf conf=new SparkConf()rn        .setMaster("local")rn        .setAppName("myTak
Hive中分组取前N个值的实现-row_number()
rn背景rn假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩。rn这个就是典型在分组取Top N的需求。rn rn解决思路rn对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科,成绩做order by排序,然后对排序后的成绩,执行自定义函数row_number(),必须带一个或者多个列参数,如ROW_NUMBER(col1, ....),它的作用是按指定的...
mysql分组后每组取前n条
#分组后每组取前n条n#取前每组前2个,有并列第二的则都取n如001学生有四门成绩90、80、70、60n下面条件子查询是在a中每取一组,取b中统计,看满足b中条件的是否na.score b.score countn90 Na 0n80 90 1n70 90 2n   80n60 90 3n   80  n   70   n可以看出符合条件的只有前两组nnn如果第二大
[python]返回每个分组的top_n
def top_n(df, n=3, column='APM'):n """n 返回每个分组按 column 的 top n 数据n """n return df.sort_values(by=column, ascending=False)[:n]df_data.groupby('LeagueIndex').apply(top_n)
tensorflow实现分组取top_k
def test_segment():n """n 分组取出各个类别的最大概率n :return:n """n k = 3n label_tags = tf.Variable(tf.constant(['label1', 'label2', 'label3', 'label4']), trainable=False)n label_class = tf....
spark对分组后value值进行排序(JAVA)
maven:rnrnn org.apache.sparkn spark-core_2.10n 1.6.0nrngroupsort.txt:rnrnspark 100rnstorm 90rnkafka 75rnhadoop 60rnzookeeper 100rnimpala 80rnhbase 65rnhive 90rnflume 95rnelasticsearch 100rnsp
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java一个班有n个学生 java3个班级4个学生