您的位置:首页 > 编程语言

第三章 RDD编程

2017-12-13 19:34 127 查看


3.1 RDD基础

RDD——弹性分布式数据集。每个RDD都被分为多个分区,这些分区运行在集群中的不同节点上。RDD可以包含python、java、scala中任意类型的对象,甚至可以包含用户自定义的对象。
用户可以通过两种方式创建RDD:读取外部数据集和通过对象集合创建。
创建后的RDD支持两类操作:转化操作和行动操作。
转化操作会由一个RDD生成一个新的RDD。
行动操作会对RDD计算出一个结果,并把结果返回。
每个spark程序或者shell会话都按照如下方式工作:
1) 从外部数据创建出输入的RDD
2) 使用转化操作对RDD进行转化,定义新的RDD
3) 通知spark对需要被重用的中间结果RDD执行persist()操作
4) 使用行动操作来出发一次并行计算,spark会对计算进行优化后再执行。

3.2 创建RDD

读取外部数据,例如:
val lines=sc.textFile("readme.md")
对集合进行并行化,例如:
val lines=sc.parallelize(List("a","b","c"))

3.3 RDD操作

3.3.1 转化操作

转化操作返回新的RDD,是惰性操作。例如map()和filter()

3.3.2 行动操作

行动操作对数据集进行实际的计算。例如count()和take()

3.3.3 惰性求值

RDD的转化操作都是惰性求值,也就意味着在调用行动操作之前spark不会开始计算
spark惰性求值可以把一些操作合并到一起来减少计算数据的步骤。

3.4 常见的转化操作和行动操作

1.转化操作

1). 对一个RDD进行基本的RDD转化操作

例如对数据集{1,2,3,3}



2). 对针对两个RDD的转化操作

例如对数据集{1,2,3}和{3,4,5}



2.行动操作

例如对数据集{1,2,3,3}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息