spark 例子count(distinct 字段)
spark 例子count(distinct 字段)
例子描述:
有个网站访问日志,有4个字段:(用户id,用户名,访问次数,访问网站)
需要统计:
1.用户的访问总次数去重
2.用户一共访问了多少种不同的网站
这里用sql很好写
select id,name,count(distinct url) from table group by id,name
其实这个题目是继官方和各种地方讲解聚合函数(aggregate)的第二个例子,第一个例子是使用aggregate来求平均数。
我们先用简易版来做一遍,后续我更新一份聚合函数版
原始数据:
id1,user1,2,http://www.baidu.com
id1,user1,2,http://www.baidu.com
id1,user1,3,http://www.baidu.com
id1,user1,100,http://www.baidu.com
id2,user2,2,http://www.baidu.com
id2,user2,1,http://www.baidu.com
id2,user2,50,http://www.baidu.com
id2,user2,2,http://www.sina.com
结果数据:
((id1,user1),4,1)
((id2,user2),4,2)
代码片段:
val sparkConf = new SparkConf().setAppName("DisFie").setMaster("local")
val sc = new SparkContext(sparkConf)
val source = Source.fromFile("C:\\10.txt").getLines.toArray
val RDD0 = sc.parallelize(source)
RDD0
.map {
lines =>
val line = lines.split(",")
((line(0), line(1)), (1, line(3)))
}
.groupByKey()
.map {
case (x, y) =>
val(n,url) = y.unzip
(x,n.size,url.toSet.size)
}
.foreach(println)
spark 例子count(distinct 字段)的更多相关文章
- Oracle-distinct()用法、count(distinct( 字段A || 字段B))是什么意思?distinct多个字段
0.distinct用法 在oracle中distinct的使用主要是在查询中去除重复出现的数据 直接在字段前加distinct关键字即可,如:select distinct 名字 from tabl ...
- 数据库面试题之COUNT(*),COUNT(字段),CONUT(DISTINCT 字段)的区别
COUNT(*).明确的返回数据表中的数据个数,是最准确的 COUNT(列),返回数据表中的数据个数,不统计值为null的字段 COUNT(DISTINCT 字段) 返回数据表中不重复的的数据个数,不 ...
- PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE
零除的处理 用NULLIF(col, 0)可以避免复杂的WHEN...CASE判断, 例如 ROUND(COUNT(view_50.amount_in)::NUMERIC / NULLIF(COUNT ...
- 关于MySQL count(distinct) 逻辑的一个bug【转】
本文来自:http://dinglin.iteye.com/blog/1976026#comments 背景 客户报告了一个count(distinct)语句返回结果错误,实际结果存在值,但是用cou ...
- SQL server 中 COUNT DISTINCT 函数
目的:统计去重后表中所有项总和. 直观想法: SELECT COUNT(DISTINCT *) FROM [tablename] 结果是:语法错误. 事实上,我们可以一同使用 DISTINCT 和 C ...
- 使用子查询可提升 COUNT DISTINCT 速度 50 倍
注:这些技术是通用的,只不过我们选择使用Postgres的语法.使用独特的pgAdminIII生成解释图形. 很有用,但太慢 Count distinct是SQL分析时的祸根,因此它是我第一篇博客的不 ...
- Mysql中count(*),DISTINCT的使用方法和效率研究
在处理一个大数据量数据库的时候 突然发现mysql对于count(*)的不同处理会造成不同的结果 比如执行 SELECT count(*) FROM tablename 即使对于千万级别的数据mysq ...
- SQL COUNT DISTINCT 函数
定义和用法 可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目. 语法 SELECT COUNT(DISTINCT column(s)) FROM table 例子 注意: ...
- 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)
[优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...
随机推荐
- January 09 2017 Week 2nd Monday
Patience is bitter, but its fruit is sweet. 忍耐是痛苦的,但它的果实是甜蜜的. Some patience may be just fruitless, o ...
- [BZOJ 1124][POI 2008] 枪战 Maf
1124: [POI2008]枪战Maf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 659 Solved: 259[Submit][Status ...
- python3程序设计基本方法
实例 6.升级维护 总结: 打了多年的游击战.突然经过教官的指导,觉得很受益,程序自学需要总结和交流.
- 布隆过滤器(Bloom Filter)简要介绍
一种节省空间的概率数据结构 布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判.但是布隆过滤器也不是特别不精确,只要参数设置的 ...
- JavaScript浏览器对象模型(BOM)之window对象
一.BOM概述 BOM(Browser Object Model)浏览器对象模型,它提供了很多对象,用于访问浏览器的功能. BOM 缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象 ...
- 26、springboot与消息
概述: 1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力消息服务中两个重要概念: 2.消息代理(message broker)和目的地(destination) ...
- map详讲<二>
查找元素: Map可以根据健来查找元素,提供方法find(key),如果是这个健对应的元素存在,则返回的是这个健的迭代器iterator,否则返回的是std::end(): 使用find()函数有点笨 ...
- 想要使用 for循环,就要添加 索引器
- Linux下一种简单易行的cpu benchmark方法
用Linux自带的bc计算器计算pi值的一种benchmark手段 其实很简单,就是一行命令. time echo “scale=5000; 4*a(1)” | bc -l -q time是计时程 ...
- 寻找最小的k个数(四种方法)
1 使用从大到小的优先队列保存最小的K个数,每次取出K个数之后的其余数和堆顶元素比较,如果比堆顶元素小,则将堆顶元素删除,将该元素插入 void topK(int arr[],int n,int k) ...