暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Learning Spark Chapter 3 RDD_中文.pdf
164
24页
0次
2022-06-14
5墨值下载
23
第三
RDD
编程
本章介
Spark
处理数据的心抽象:弹性分布式数据
RDD
)。
RDD
简单
来说就是元素的分布式集合。
Spark
中,所有的工作都被表达为创建新
RDD
对已存在
RDD
做变换,者对
RDD
调用某些作来计算到一个结。在
底层
Spark
将包含在
RDD
中的数据动分你的整个群,将你对其
行的操作并行化。
数据科学家和工程师都应该阅读本章,因为
RDD
Spark
的核心概念。我们
烈建议你在交互式
Shell
中尝试一些示例(见本书第
11
页的
Spark
Python
Scala Shell
简介”)。另外,本章所有的代码都在本书的
github
库有下载。
RDD 基础
Spark
中的
RDD
简单来说就是所有对象的一个不可变的分布式集合。每个
RDD
都被分割为多个分区,这就可以在集群的不同节点上进行计算。
RDD
可以包含
任何
Python
Java
Scala
对象类型,包括用户自定义类型。
用户可以用两种方式创建
RDD
:通过加载一个外部数据集,或者在驱动程序
list
set
3-1
使
SparkContext.textFile()
函数加载一个文本文件作为一个字符串
RDD
示例
3-1
:在
Python
中用
textFile()
函数创建一个字符串
RDD
>>> lines = sc.textFile(“README.md”)
24
RDD 一旦创建好了,可以提供两种不同类型的操作:变换(transformation)和动作
(action)变换是从前一个 RDD 构造出一个新的 RDD例如,有一个常见的变换
是用谓词匹配来过滤数据。在我们之前的文本文件的示例中,我们可以用这个变
换来创建一个新的 RDD这个 RDD 容纳的数据是只包含了单词Python的字
符串。如示例 3-2 所示:
示例
3-2
:调用
filter()
变换
>>> pythonlines = lines.filter(lamda line: “Python” in line)
动作,另一方面来看,是基于 RDD 来计算某个结果,并将结果返回给驱动程序
或者保存结果到一个外部的存储系统(比如 HDFS更早之前我们调用过一个
动作的例子是 first()。它返回 RDD 中的第一个元素,示例 3-3 展示了这点:
示例
3-3
:调用
first()
动作
>>> pythonlines.first()
u'## Interactive Python Shell'
变换和动作不相同是因为 Spark 计算 RDD 的方式。虽然,在任何时候你都可以
定义一个新 RDD但是 Spark 总是以一 lazy 方式计算它们,也就是它
被第一次用于动作的时候。这种方式最初可能觉得不太寻常,但是当你开始处理
大数据时,你就会有同感了。举例来说,考虑下前面的示 3-2 示例 3-3,我
们定义了一个文本文件 RDD 后过滤出了包含Python的行。如果当我们
写完 lines = sc.textFile(...)语句,Spark 就立刻加载和保存整个文件的所有行的话,
考虑到我们马上就要过虑掉很多的行,这会导致浪费很多存储空间。反过来说,
一旦 Spark 知道了整个变换链,它就能只计算结果需要的数据。实际上,对于 first()
动作来说,Spark 只需要扫描文件直到它找到第一个符合条件的行就可以了,这
甚至不需要读整个文件。
最后,每你执动作Spark RDD 默认被重新计如果想在多个
动作中重用 RDD你可以 RDD.persist()要求 Spark RDD 持久化。我们可以
用一些不同的方式要求 Spark 对我们的数据持久化,详见 3-6在初次计算之
of 24
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜