CDA数据分析师学习之路出系列了,每篇都有数据分析、大数据相关文章和视频,各大名师主讲,每周一、二、四、五更新!CDA数据分析师学习之路已经更新到CDA数据分析师学习之路(32)了,欢迎观看学习!
另外欢迎各位坛友投稿数据分析相关视频和文章,一经选用将赠送100论坛币和现金奖励、并有机会获赠一套数据分析相关视频(SAS、SPSS、Java、统计理论等等)!(PS:相关文章和视频得原创!联系方式见下方,欢迎投稿!)
CDA数据分析师学习之路(32)
附赠《数据绑定(1)》干货视频
Spark RDD的转换操作举例
Spark RDD中的操作非常丰富,有80多种针对数据的操作。其中最重要的是Transformation(转换操作)和Action(执行操作)两类。其中转换操作采用了惰性策略,转换操作只生成元数据,相当于对业务逻辑的一种抽象描述,并不会真正执行,只有提交行动操作,这时候才开始从头到尾依次计算。
最常用的转换操作有map, mapPartitions, mapValues, flatMapValues, filter等。
n map
针对RDD中的每个元素,经过指定的函数,转换成新的元素,进而得到新RDD
val a =sc.parallelize(1 to 9, 3)
val b = a.map(x=> x*2)
a.collect
b.collect
res10:Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
res11:Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)
上述例子中把原RDD中每个元素都乘以2来产生一个新的RDD
通过toDebugString方法来查看RDD间的依赖关系和转换过程
n mapPartitions
mapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区
val a =sc.parallelize(1 to 9, 3)
defmyfunc[T](iter: Iterator[T]) : Iterator[(T, T)] = {
var res =List[(T, T)]()
var pre =iter.next
while(iter.hasNext) {
val cur =iter.next; res .::= (pre, cur) pre = cur; } res.iterator }
a.mapPartitions(myfunc).collect
res0:Array[(Int, Int)] = Array((1,2), (2,3), (4,5), (5,6) , (7,8), (8,9))
上述例子中的函数myfunc是把分区中一个元素和它的下一个元素组成一个Tuple。因为分区中最后一个元素没有下一个元素了,所以(3,4)和(6,7)不在结果中。
n mapValues
mapValues顾名思义就是输入函数应用于RDD中Kev-Value的Value,原RDD中的Key保持不变,与新的Value一起组成新的RDD中的元素。
val a =sc.parallelize(List("dog", "tiger", "lion","cat", "panther", " eagle"), 2)
val b = a.map(x=> (x.length, x))
b.mapValues("x"+ _ + "x").collect
res5:Array[(Int, String)] = Array((3,xdogx), (5,xtigerx), (4,xlionx), (3,xcatx),(7,xpantherx), (5,xeaglex))
感谢董轶群老师提供视频资料!
附赠《数据绑定(1)》干货视频
【CDA数据分析师学习之路】数据绑定(1)
感谢辛立伟老师提供视频资料!
***************************************************************************
投稿流程:投稿前请加我QQ联系我,或者直接将文章或视频发送到我的邮箱,但一定要备注好您的姓名、电话、邮箱,以方便我联系您们赠送现金和视频教程的事宜!欢迎投稿!
投稿联系方式:
小段老师QQ:2881989713
邮箱:duanliangbin@pinggu.org
***************************************************************************
相关链接:
CDA数据分析师就业班第四期4月10号开课啦!https://bbs.pinggu.org/thread-4160404-1-1.html
CDA大数据分析师就业班第二期4月17号开课啦!https://bbs.pinggu.org/thread-4160397-1-1.html
上一篇:
CDA数据分析师学习之路(31)https://bbs.pinggu.org/thread-4499951-1-1.html
下一篇:
CDA数据分析师学习之路(33)https://bbs.pinggu.org/thread-4506511-1-1.html