Learning Spark第二版电子书中文完整版|百度网盘下载

编者评论:学习 Spark 第二版电子书

随着并行数据分析变得越来越普遍,许多领域的从业者都在寻找更简单的工具来完成这项任务。 Apache Spark 已迅速成为扩展和推广 MapReduce 的最流行工具之一。今天为大家准备了Learning Spark电子书第二版,欢迎下载

相关内容部分预览

简介

随着并行数据分析变得越来越普遍,许多领域的从业者都在寻找更简单的工具来完成这项任务。 Apache Spark 迅速成为用于扩展和推广 MapReduce 的最流行工具之一。 Spark 提供了三个主要优点。

首先,它易于使用——您可以在笔记本电脑上开发应用程序,使用高级 API,让您专注于计算内容。其次,Spark 速度快,支持交互使用和复杂算法。3、Spark是通用引擎,

允许您组合以前可能需要不同引擎的多种类型的计算(例如,SQL 查询、文本处理和机器学习)。

这些功能使 Spark 成为了解大数据的绝佳起点。

本入门的目的是让您快速上手使用 Spark。

您将学习如何在笔记本电脑上下载和运行 Spark,并使用它来交互式地学习应用程序编程接口。在那里,我们将讨论可用操作和分布式执行的细节。最后,您将访问 Spark 的内置高级库,

包括机器学习、流处理和 SQL 库。我们希望本书能为您提供快速解决数据分析问题的工具,无论您是在一台机器上还是数百台机器上。

作者介绍

作者感谢为本书提供反馈的审稿人:

约瑟夫·布拉德利、戴夫·布里奇兰、查兹·钱德勒、米克·戴维斯、萨姆·德里蒂、维德

哈,安德鲁·戈尔、迈克尔·格雷森、简·约本、斯蒂芬·朱、杰夫·马丁内斯、乔什

Maloney、Andrew O、Mike Patterson、Josh Rosen、Bruce Salwinsky、Xiangrui Meng 和 Reza Zadeh。

作者要特别感谢 David Andrzejski、David Butler、Juliet Hughland、Marek Kovojei、Taka Shinagawa、Deborah Siegel、Dr. Norman

穆勒、阿里·戈德西和萨米尔·法鲁克。他们对大多数章节提供了详细的反馈,并帮助指出了许多重要的改进。

Learning Spark(Python版)学习笔记(1-RDD基本概念和命令

《学习 Spark》这本书是 Spark 入门的必读书籍。中文版是《Spark Fast Big Data Analysis》,不过豆瓣书评很有意思。英文原版评分7.4,评论说介绍只是深入,不足。 ,中文翻译版评分8.4,评论好评,有点意思。我觉得这本书可以作为官方文档的补充。刷完之后,Spark的一些基本概念和简单的代码程序基本没有问题。这本书的优点之一是它是用 Python/Java/Scala 三种语言编写的,因此具有广泛的适用性。我的观点是,你应该先掌握一种语言,然后再学习其他语言。由于我的工作中比较常用Python,所以我总结一下Python相关的命令。下一阶段是深入学习 Java 和 Scala。本文总结了第 1-3 章的重点内容。

说到Spark就不得不提RDD,RDD,字面意思是弹性分布式数据集,但实际上是元素的分布式集合。 Python的基本内置数据类型包括整数、字符串、元组、列表、字典、布尔类型等,而Spark的数据类型只有RDD。在 Spark 中,所有对数据的操作基本上都是围绕 RDD 来的,比如创建、转换、求值等。所有的 RDD 转换都是惰性的(lazy evaluation)。 RDD 转换操作会生成一个新的 RDD。新RDD的数据依赖于原RDD的数据,每个RDD包含多个partition。然后程序实际上构造了一个由多个相互依赖的 RDD 组成的有向无环图(DAG)。并将这个有向无环图作为作业提交给 Spark,通过在 RDD 上执行操作来执行。了解RDD之后,以后可以少走很多弯路。关于RDD的特性,可以查到很多资料。其实我们只需要明白两点:

1、不可变

2、分布式

可能有人觉得很奇怪,如果RDD是不可变的,那么在进行数据操作的时候如何改变它的值以及如何进行计算呢?实际上,RDD 支持两种操作:

1.Tanformation(变换操作):返回值还是一个RDD

2.Action:返回值不是RDD

第一个Transformation是返回一个新的RDD,比如map()、filter()等。这种操作是惰性的,即从一个RDD转换到另一个RDD的操作不会立即执行,但只记录。只有有Action操作时才会真正开始计算,生成的新RDD会写入内存或hdfs中,不会改变原RDD的值。 Action操作实际上会触发Spark计算,给RDD计算一个结果,并将结果返回到内存或hdfs,如count()、first()等。

通俗的讲,假设你写了一堆程序,数据经过多次变换。这个时候没有计算,就放在这里吧。 Action 操作将在产生最终结果时使用。这时候Action会进行相关的变换操作,运算速度会很快(1、Action不一定需要调用所有的变换操作,二是只在最后一步计算相关变换操作)。如果Transformation没有惰性,那么每次变换都会计算一次,最后一次Action操作时计算一次,这样会消耗大量内存,大大降低计算速度。

还有另一种情况。如果我们想多次使用同一个RDD,每次都对RDD进行Action操作,会消耗大量Spark的内存。在这种情况下,我们可以使用 RDD.persist() 缓存这个 RDD 并在内存不足时将其存储到磁盘中。在 Python 中,存储的对象总是由 Pickle 库序列化,因此不设置序列化级别没有任何效果。

RDD的性质和操作方法说完了,现在说一下如何创建RDD,有两种方式

1、读取外部数据集

2、并行化内存中的集合

阅读剩余
THE END