文档章节

Spark之Transformation和Action

datapro
 datapro
发布于 2015/06/23 18:51
字数 669
阅读 92
收藏 0

1、RDD的两种类型操作

<IMG alt=http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg src="http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg" _src="http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg">

 RDD的创建:

    (SparkContext) sc.parallelize(collection) //将一个集合转换成RDD

    sc.textFile("path..") //读取一个文件并转换成RDD

2、Transformations类型

    延迟执行,一个RDD通过该操作产生的新的RDD时不会立即执行,只有等到Action操作才会真正执行。

map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集
示例:
var list = List(1,2,3,4,5,6); //定义一个List集合
//对于调用map的list而言,num表示list中每一个element,每个element都*2,num可以理解为一个变量名
list.map(num=>num*2) 
结果:List(2,4,6,8,10,12)
//list.map(num=>num*2)可以看成是集合中每个element*2
filter(func):对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD
示例:
var list = List(1,2,3,4,5,6); //定义一个List集合
//对于调用filter的list而言,num表示list中每一个element,筛选每个符合>2条件的element
list.filter(num=>num>2) //参数必须是一个Boolean
打印结果:List[Int] = List(3, 4, 5, 6)
flatMap(func):和map差不多,但是flatMap生成的是多个结果 
示例:
// 定义一个元素为String的集合
var strList = List("hello world","hello xm","hello xh","hello , Im fine","hello how are you?")
// 将每个element切分成多个字段,flatMap每个参与计算的element必须返回多个结果或者一个数组,例如返回的结果
// 可以这样:List(Array(...),Array(...),...)
strList.flatMap(stsr=>str.split(" "))
打印结果:List(hello, world, hello, xm, hello, xh, hello, ,, Im, fine, hello, how, are, you?)
groupByKey():将相同key的value进行分组
groupByReduce():将相同key的value进行合并计算
union:将两个RDD聚合,例如:RDD1->(1,2,3),RDD2->(1,2,3),RDD1 union RDD2 -> (1,2,3,1,2,3)
join:将两个RDD取笛卡尔积
SortByKey(boolean):按照key进行排序,true为降序,false为升序,如果想将value进行排序,可以将key和value位置互换,互换操作:map(x=>(x._2,x._1))

3、Actions类型

    提交Spark作业,当Action时,Transformation类型的操作才会真正执行计算操作,然后产生最终结果输出。

cache:将结果放到内存
count:统计element的数量
collect:返回一个数组结果
reduce:对所有的element进行合并
lookup:针对某个key查看value
save:将结果保存到磁盘

4、官方文档

    其他的一些操作可以参考官方文档:http://spark.apache.org/docs/latest/programming-guide.html#transformations

© 著作权归作者所有

datapro
粉丝 16
博文 37
码字总数 22063
作品 0
广州
高级程序员
私信 提问
加载中

评论(0)

Comprehensive Introduction to Apache Spark

Introduction Industry estimates that we are creating more than 2.5 Quintillion bytes of data every year. Think of it for a moment – 1 Qunitillion = 1 Million Billion! Can you i......

grasp_D
2018/06/15
13
0
探秘Hadoop生态10:Spark架构解析以及流式计算原理

导语 spark 已经成为广告、报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spark技术的...

你的猫大哥
2017/03/08
0
0
Spark性能调优系列一:Spark的作业模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bluishglc/article/details/80653801 Job Spark的整个作业体系中,处于顶层的是Job, Job和Spark中的Action是一...

bluishglc
2018/06/11
0
0
【Spark】弹性分布式数据集RDD及其操作

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/86714557 1、RDD简介 RDD是Spark提供的核心抽象,全称为Resillient Distribu...

魏晓蕾
2019/01/31
0
0
如何成为云计算大数据Spark高手

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位; 要想...

Spark亚太研究院
2014/06/13
2.1K
3

没有更多内容

加载失败,请刷新页面

加载更多

承德哪里可以开材料费发票-中国新闻网

承德哪里可以开材料费发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

13909074470
6分钟前
12
0
秦皇岛哪里可以开材料费发票-中国新闻网

秦皇岛哪里可以开材料费发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bri...

18281999450
7分钟前
14
0
青岛哪里可以开材料费发票-中国新闻网

青岛哪里可以开材料费发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

13990759984
7分钟前
4
0
宁波哪里可以开材料费发票-中国新闻网

宁波哪里可以开材料费发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridg...

13990759642
8分钟前
11
0
台山哪里可以开医院门诊发票-中国新闻网

台山哪里可以开医院门诊发票【152 * 9б 28 * 21 б9】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bri...

18280804987
27分钟前
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部