resRDD: ArrayBuffer(((guid01,2018-02-27),(2018-02-28,2018-03-02,3)), ((guid02,2018-02-28),(2018-03-01,2018-03-03,3)), ((guid01,2018-02-28),(2018-03-04,2018-03-07,4)))
上述2种实现方式,最关键的都是使用reduceByKey进行数据的一次性转换,但这样一来,要求对输入的数据进行处理
观察数据得出,先将数据做切分,变成uid, 日期字符串的对偶元组
然后使用groupByKey进行划分,根据uid进行划分
划分之后进行排序,这时候每个分区的数据就是对应uid各自的数据
再使用flatMapValues对数据做转换,将递增的rownumber,diffDate,次数标记1转换出来。注意flatmapValues输入是一个迭代器,输出也是一个迭代器
然后根据reduceByKey的规则,使用map转换数据。用uid,diffDate的元组作为key,使用当前日期,空字符串,数字1作为value
进行reduce聚合时,实际上是每个分区相同key的数据两两聚合,然后是分区之间的结果数据进行聚合。
所以这里直接将相同key(uid,diffDate)的value进行聚合时,相同数据下,最小的日期,最大的日期,累计天数都可以求出来。
累计天数就是分区和分区结果都使用累加的方式
最小天数使用min比较
最大天数使用max比较
最后的结果使用filter过滤
注意点,一定一定记得,根据需求对可能产生重复的数据进行去重,否则会影响结果。同时做数据转换时,最好按需搜集字段,不需要的字段都去除,这样可以极大降低大数据处理的数据量,提升性能,降低处理时间
Spark RDD案例(一)连续数据统计1. 背景Spark作为大数据分析引擎,本身可以做离线和准实时数据处理Spark抽象出的操作对象如RDD、dataSet、dataFrame、DStream等都是高层级的抽象,屏蔽了分布式数据处理代码细节,操作分布式数据和处理就像使用scala集合接口一样便利。这样可以很大降低编程使用和理解门槛。在实际生产中,大数据处理面临的业务需求和正常java 业务需求一样,都是基于数据做处理。不同的是正常java业务数据相对较少,如mysql中适合存储的数据是小而美的
http://bigdata.edu360.cn/laozhang
http://bigdata.edu360.cn/laozhang
http://bigdata.edu360.cn/laozhao
http://bigdata.edu360.cn/laozhao
http://bigdata.edu360.cn/laozhao
http://bigdata.edu360.c.
1 连续处理概述
连续处理(Continuous Processing)是Spark 2.3中引入的一种新的实验性流执行模式,可实现低的(~1 ms)端到端延迟,并且至少具有一次容错保证。 将其与默认的微批处理(micro-batchprocessing)引擎相比较,该引擎可以实现一次性保证,但最多可实现~100ms的延迟。
在实时流式应用中,最典型的应用场景:网站UV统计。
业务需求一:实时统计网站UV,比如每日网站UV;
业务需求二:统计最近一段时间(比
Spark是基于内存计算的大数据并行计算框架
Spark最大的特点是基于内存的实时计算
2013年Spark加入Apache孵化器后发展迅猛,如今已成为Apache基金会最重要的三大分布式开源项目之一(Hadoop、Spark、Storm)
2014年打破Hadoop保持的基准排序记录——Spark用十分之一的计算资源,获得了比Hadoop快3倍的速度
▍Spark特点
速度快:使用DAG执行引擎,以支持循环数据流与内存计算
连续型概率分布与正态分布
连续数据
前面讲到的概率分布涉及的都是离散数据,即数据由一个个单独的数值组成,其中的每一个数值都有对应概率。例如,在分析老虎机收益概率分布时,每一局赌局出现的收益数额是确定的,我们很清楚各种情况的赔率,也知道自己有机会赢到其中一种。
如果是离散数据,则为数值型数据,只能取确切值。离散数据往往能以某种方式进行计数,例如糖果机中的糖果数目,智力游戏中答对的问题的数目,或是在一个特定时段内的故障次数。
但并非所有数值型数据都是离散的。有时候,数据涵盖的是一个范围,这个范围内的任何一个数
上一节,我们总结了离散型数据的处理方法,这一节我们整理下连续型数据的处理方法。一般来讲,离散型数据都是类别值,如:男生,女生,商务座,一等座,二等座等等。连续型数据基本上都是数值型数据,如年龄(10岁,11岁…),身高(110cm, 175cm…),海拔,薪资等等。
既然连续型数据都是数值,是可以直接拿来供计算机使用的,那么连续型数据该如何处理?这里我们提出一个处理思想:连续型数据离散化。连续型数据离散化以后的建模效果一定会比原来的好吗?这个答案是不一定的,任何时候我们都需要对两者结果进行比较,从而做出判断