怎样理解Spark中的Transformation和Action

今天就跟大家聊聊有关怎样理解Spark中的Transformation和Action,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

10年积累的网站建设、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有红寺堡免费网站建设让你可以放心的选择与我们合作。

1、RDD的两种类型操作

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:将结果保存到磁盘

看完上述内容,你们对怎样理解Spark中的Transformation和Action有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


当前文章:怎样理解Spark中的Transformation和Action
标题URL:http://bzwzjz.com/article/pesjpd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都企业网站设计 成都网站建设 定制网站设计 成都网站制作 成都网站建设 专业网站建设 专业网站设计 成都网站设计 自适应网站设计 网站建设 成都品牌网站设计 营销型网站建设 广安网站设计 成都网站建设 高端网站设计 成都网站设计 成都定制网站建设 成都营销网站制作 成都网站制作 成都网站设计 高端定制网站设计 成都网站建设