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. ...
随机推荐
- [EffectiveC++]item16:Use the same form in corresponding uses of new and delete
- Ubuntu apt-get 更换源
Ubuntu apt-get 更换源 我们使用清华的镜像源进行更换 Ubuntu 的软件源配置文件是 /etc/apt/sources.list.将系统自带的该文件做个备份,将该文件替换为下面内容,即 ...
- 怎么知道是哪个div被点击了
怎么知道是哪个div被点击了 不在div中加onclick等事件调用函数 ,用事件监听函数,但是如果div中的div被点击了,addEventListener得到了两个监听事件,我想点击div里的di ...
- UVA 10288 Coupons---概率 && 分数类模板
题目链接: https://cn.vjudge.net/problem/UVA-10288 题目大意: 一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最 ...
- ClassNotFoundException: INameEnvironment
springboot兼容jsp启动是报错,ClassNotFoundException: INameEnvironment 降低springboot版本即可,原版本1.5.10,降为1.5.2可使用
- iOS js 使用与JSContext
JSContext:js执行环境,包含了js执行时所需要的所有函数和对象: js执行时,会在执行环境搜索需要的函数然后执行,或者保存传入的变量或函数: JSContext *jsContext = [ ...
- 108.UIView关于布局和约束的方法(AutoLayout)
http://blog.csdn.net/wangyanchang21/article/details/52270136 关于布局(UIViewHierarchy) 1.layoutSubviews ...
- docker-5-容器数据卷
1.是什么 一句话:有点类似我们Redis里面的rdb和aof文件 先来看看Docker的理念: * 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 ...
- linux命令使用总结
## linux 查看系统全部信息 uname -a ## linux 查看系统内核信息 uname -r ## linux 查看系统版本号信息 cat /etc/redhat-release ## ...
- 自定义组件---图片和文字实现ImageButton效果
1.效果图 2.自定义代码: <span style="font-family:Comic Sans MS;font-size:14px;">public class ...