Spark实现分组TopN】的更多相关文章

一.概述 在许多数据中,都存在类别的数据,在一些功能中需要根据类别分别获取前几或后几的数据,用于数据可视化或异常数据预警.在这种情况下,实现分组TopN就显得非常重要了,因此,使用了Spark聚合函数和排序算法实现了分布式TopN计算功能. 二.代码实现 package scala import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.types.{StringType, StructField, StructTy…
一:准备 1.源数据 2.上传数据 二:TopN程序编码 1.程序 package com.ibeifeng.bigdata.spark.core import java.util.concurrent.ThreadLocalRandom import org.apache.spark.{SparkConf, SparkContext} /** * 分组TopN:按照第一个字段分组:同一组中,按照第二个字段进行排序:每一组中,获取出现最多的前K个数据. * Created by ibf on 0…
1. 练习 数据: (1)需求1:统计有过连续3天以上销售的店铺有哪些,并且计算出连续三天以上的销售额 第一步:将每天的金额求和(同一天可能会有多个订单) SELECT sid,dt,SUM(money) day_money FROM v_orders GROUP BY sid,dt 第二步:给每个商家中每日的订单按时间排序并打上编号 SELECT sid,dt,day_money, ROW_NUMBER() OVER(PARTITION BY sid ORDER BY dt) rn FROM…
[转]SQL查询案例:取得分组 TOP-N CREATE TABLE TopnTest ( name     VARCHAR(10),   --姓名 procDate DATETIME,       --处理时间 result   INT              --成绩 ); INSERT INTO TopnTest VALUES('张三', '2010-10-01 12:00:05', 80); INSERT INTO TopnTest VALUES('张三', '2010-10-01 1…
如果有商品品类的数据pairRDD(categoryId,clickCount_orderCount_payCount),用Spark完成Top5,你会怎么做? 这里假设使用Java语言进行编写,那么你有两种思路: 1.简化成RDD(categoryObject),其中categoryObject实现了java.lang.Comparable.然后使用top(5)获得topN 2.转换成PairRDD(categoryKey,info),其中categoryKey实现了scala.math.Or…
0.简介 TopN算法是一个经典的算法,由于每个map都只是实现了本地的TopN算法,而假设map有M个,在归约的阶段只有M x N个,这个结果是可以接受的并不会造成性能瓶颈. 这个TopN算法在map阶段将使用TreeMap来实现排序,以到达可伸缩的目的. 当然算法有两种,一种是唯一键,就是说key的类型是唯一的(是指在比较的实际阶段),比如本篇就是唯一键的TopN实现: 另一种就是非唯一键,比如key值可能会有A.B.C三种,然后分别对他们求TopN,当然,我们假设数据是混在一起的,非唯一键…
简介 TopN算法是一个经典的算法,由于每个map都只是实现了本地的TopN算法,而假设map有M个,在归约的阶段只有M x N个,这个结果是可以接受的并不会造成性能瓶颈. 这个TopN算法在map阶段将使用TreeMap来实现排序,以到达可伸缩的目的. 当然算法有两种,一种是唯一键,就是说key的类型是唯一的(是指在比较的实际阶段),比如本篇就是唯一键的TopN实现: 另一种就是非唯一键,比如key值可能会有A.B.C三种,然后分别对他们求TopN,当然,我们假设数据是混在一起的,非唯一键方面…
Spark core面试篇03 1.Spark使用parquet文件存储格式能带来哪些好处? 1) 如果说HDFS 是大数据时代分布式文件系统首选标准,那么parquet则是整个大数据时代文件存储格式实时首选标准 2) 速度更快:从使用spark sql操作普通文件CSV和parquet文件速度对比上看,绝大多数情况 会比使用csv等普通文件速度提升10倍左右,在一些普通文件系统无法在spark上成功运行的情况 下,使用parquet很多时候可以成功运行 3) parquet的压缩技术非常稳定出…
Spark Core面试篇01 随着Spark技术在企业中应用越来越广泛,Spark成为大数据开发必须掌握的技能.前期分享了很多关于Spark的学习视频和文章,为了进一步巩固和掌握Spark,在原有spark专刊基础上,新增<Spark面试2000题>专刊,题集包含基础概念.原理.编码开发.性能调优.运维.源代码以及Spark周边生态系统等.部分题集来源于互联网,由梅峰谷志愿者收集和整理,部分题集由梅峰谷志愿者结合生产实际碰到的问题设计出来,希望能给大家带来帮助. 一.简答题 1.Spark…