首页>参考读物>计算机科学与技术>软件与程序设计

PySpark实战指南:利用Python和Spark构建数据密集型应用并规模化部署
作者 : [美] 托马兹·卓巴斯(Tomasz Drabas) 丹尼·李(Denny Lee) 著
译者 : 栾云杰 陈瑶 刘旭斌 译
丛书名 : 大数据技术丛书
出版日期 : 2017-10-26
ISBN : 978-7-111-58238-0
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 200
开本 : 16
原书名 : Learning PySpark
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本文从Spark的基本特点出发,借助大量例子详细介绍了关于使用Python调用Spark新特性的方法、处理结构化及非结构化数据的方法、使用PySpark中基本可用数据类型的方法、生成机器学习模型方法、进行图像操作以及阅读串流数据的方法等等新兴技术内容。

图书特色

Apache Spark是用于高效集群计算的开源框架,具有强大的数据并行和容错接口。本书将向你展示如何利用Python的强大功能,并将其用于Spark生态系统。在本书的最后,你将对Spark Python API以及如何使用它们构建数据密集型应用程序有一个深入的了解。

通过阅读本书,你将学会:
Apache Spark和Spark 2.0架构
使用Spark SQL构建Spark DataFrame并与其进行交互
使用GraphFrames和TensorFrames解决图形和深度学习问题
读取、转换和理解数据,并用它来训练机器学习模型
使用MLlib和ML构建机器学习模型
spark-submit如何以编程方式提交应用程序
将本地构建的应用程序部署到集群中

内容简介

本书从Spark的基本特点出发,借助大量例子详细介绍了如何使用Python调用Spark新特性、处理结构化及非结构化数据、使用PySpark中基本可用数据类型、生成机器学习模型、进行图像操作以及读取数据流等新兴技术内容。
全书共11章。第1章通过技术和作业的组织等概念提供了对Spark的介绍。第2章介绍了RDD、基本原理、PySpark中可用的非模式化数据结构。第3章详细介绍了DataFrame数据结构,它可以弥合Scala和Python之间在效率方面的差距。第4章引导读者了解在Spark环境中的数据清理和转换的过程。第5章介绍了适用于RDD的机器学习库,并回顾了最有用的机器学习模型。第6章涵盖了当前主流的机器学习库,并且提供了目前可用的所有模型的概述。第7章引导你了解能轻松利用图解决问题的新结构。第8章介绍了Spark和张量流(TensorFlow)领域中深度学习的连接桥梁。第9章描述了Blaze是如何跟Spark搭配使用以更容易地对多源数据进行抽象化的。第10章介绍了PySpark中可用的流工具。第11章逐步指导你运用命令行界面完成代码模块化并提交代码到Spark执行。

作者简介

托马兹·卓巴斯(Tomasz Drabas)
微软数据科学家,他拥有超过13年的数据分析经验。托马兹每天都和大数据打交道,解决机器学习问题(如异常检测、流失预测),并使用Spark进行模式识别。

丹尼·李(Denny Lee)
微软Azure DocumentDB团队的首席项目经理。他是一个经验丰富的分布式系统和数据科学工程师,拥有超过18年的经验,擅长开发互联网级别基础架构、数据平台和预测分析系统(包括内部部署和云环境)。

图书前言

据估计,2013年全世界产生了大约4.4ZB(词头Z代表1021)信息量的数据!而到2020年,预计人类将会产生10倍于2013年的数据量。随着字面上的数字越来越大,加上人们需求的日益增长,为了使这些数据更有意义,2004年来自Google的Jeffrey Dean和Sanjay Ghemawat发表了一篇开创性的论文《MapReduce:Simplified Data Processing on Large Clusters》。至此,利用这一概念的技术开始快速增多,Apache Hadoop也开始迅速变得流行起来,最终创建了一个Hadoop的生态系统,包括抽象层的Pig、Hive和Mahout,都是利用了map和reduce的简单概念。
然而,即使拥有每天都分析过滤海量数据的能力,MapReduce始终是一个限制相当严格的编程框架。此外,大多数的任务还要求读取、写入磁盘。认识到这些缺点,2009年Matei Zaharia将Spark作为他博士课题的一部分开始研究。Spark在2012年首次发布。虽然Spark是基于和MapReduce相同的概念,但其先进的数据处理方法和任务组织方式使得它比Hadhoop要快100倍(对于内存计算)。
在这本书中,我们将指导你使用Python了解Apache Spark的最新性能,包括如何看懂结构化和非结构化的数据,如何使用PySpark中一些基本的可用数据类型,生成机器学习模型,图像操作,阅读串流数据,在云上部署模型。每一章力求解决不同的问题,并且我们也希望看完这本书之后,你可以掌握足够的知识来解决其他我们还没来得及在书中讲解的问题。
本书的主要内容
第1章通过技术和作业的组织等概念提供了对Spark的介绍。
第2章介绍了RDD、基本原理、PySpark中可用的非模式化数据结构。
第3章详细介绍了DataFrame数据结构,它可以弥合Scala和Python之间在效率方面的差距。
第4章引导读者了解Spark环境中的数据清理和转换的过程。
第5章介绍了适用于RDD的机器学习库,并回顾了最有用的机器学习模型。
第6章涵盖了当前主流的机器学习库,并且提供了目前可用的所有模型的概述。
第7章引导你了解能轻松利用图解决问题的新结构。
第8章介绍了Spark和张量流(TensorFlow)领域中深度学习(Deep Learning)的连接桥梁。
第9章描述Blaze是如何跟Spark搭配使用以更容易地对多源数据进行抽象化的。
第10章介绍了PySpark中可用的流工具。
第11章一步步地指导你运用命令行界面完成代码模块化并提交到Spark执行。
其他一些详细信息,我们提供了以下额外的章节:
安装Spark:https://www.packtpub.com/sites/default/files/downloads/InstallingSpark.pdf。
免费提供Spark Cloud:https://www.packtpub.com/sites/default/files/downloads/FreeSparkCloud Offering.pdf。
本书需要的软/硬件支持
阅读本书,需要准备一台个人电脑(Windows、Mac或者Linux任一系统都行)。运行Apache Spark,需要Java 7+并且安装配置Python 2.6+版本或者3.4+版本的环境;本书中使用的是Anaconda Python3.5版本,可以在https://www.continuum.io/downloads下载。
本书中我们随意使用了Anaconda的预装版Python模块。GraphFrames和TensorFrames也可以在启动Spark实例时动态加载:载入时你的电脑需要联网。如果有的模块尚未安装到你的电脑里,也没有关系,我们会指导你完成安装过程。
本书的读者对象
想要学习大数据领域发展最迅速的技术即Apache Spark的每一个人,都可以阅读此书。我们甚至希望还有来自于数据科学领域更高级的从业人员,能够找到一些令人耳目一新的例子以及更有趣的主题。
本书约定
警告或重要的笔记
提示和技巧
下载代码示例
你可以从http://www.packtpub.com下载代码文件。你也可以访问华章图书官网:http://www.hzbook.com,通过注册并登录个人账号,下载本书的源代码。
下载本书彩图
我们还提供了一个PDF文件,其中包含本书中使用的截图和彩图,可以帮助读者更好地了解输出的变化。您可以从此下载文件https://www.packtpub.com/sites/default/files/downloads/LearningPySpark_ColorImages.pdf。

上架指导

计算机/数据分析

封底文字

Apache Spark是用于高效集群计算的开源框架,具有强大的数据并行和容错接口。本书将向你展示如何利用Python的强大功能,并将其用于Spark生态系统。在本书的最后,你将对Spark Python API以及如何使用它们构建数据密集型应用程序有一个深入的了解。

你会学习如下内容:
· 了解Apache Spark和Spark 2.0架构
· 使用Spark SQL构建Spark DataFrame并与其进行交互
· 了解如何使用GraphFrames和TensorFrames解决图形和深度学习问题
· 读取、转换和理解数据,并用它来训练机器学习模型
· 使用MLlib和ML构建机器学习模型
· 了解spark-submit如何以编程方式提交应用程序
· 将本地构建的应用程序部署到集群中

译者序

为什么要翻译这本书
年初的时候我们从机械工业出版社华章分社那里知道有一本关于大数据的书正在征集翻译,在看过英文版并翻译了样章后,我们几位志同道合的软件工程师一块儿接受了《Learning PySpark》的翻译工作。我们都非常兴奋,因为作为软件工程师,能有机会把当前最热最新的技术介绍给大家是何其荣幸。
Python是数据分析最常用的语言之一,而Apache Spark是一个开源的强大的分布式查询和处理引擎。本书用详尽的例子介绍了如何使用Python来调用Spark的新特性,如何处理结构化和非结构化的数据,如何使用PySpark中一些基本的可用数据类型,如何生成机器学习模型、操作图像、阅读串流数据以及在云上部署你的模型。
数据是每个人身边都存在的,理解学习比较容易,但是数据量足够大才是一个相对准确的学习平台。在实践中,如何确定训练集合、如何将脏数据处理为清洁数据、如何填充数据等等,需要结合本书的知识理论,清楚了解待处理的大数据特性。每一种数据的特征或特性都不一致,所以前期的准备和调研必不可少。本书不仅仅是一本工具书,也是一本能深入浅出、结合简单实例来介绍PySpark语言的书。不管使用什么语言和工具,万变不离其宗。希望阅读此书的人,除了看懂示例,还能够结合实际经验来推敲,这样就能明白作者举这些例子的良苦用心。
希望大家喜欢这本书,因为译者的水平有限,翻译中的错漏缺点在所难免,希望读者批评指正。
读者对象
本书适合以下几类读者阅读:
对大数据的前沿技术非常感兴趣的人。
有志于成为一名数据科学家的从业人员。
有一定算法和编程基础的技术爱好者。
译者分工
本书由来自IBM中国开发中心的软件工程师联合翻译完成。其中:
栾云杰(目前就职于IBM中国开发中心)翻译了第5章、第6章。
陈瑶(原IBM工程师,现就职于某大数据公司)翻译了第2章、第3章、第4章、第11章。
刘旭斌(目前就职于IBM中国开发中心)翻译了第7章、第8章、第9章。
另外,第1章由栾云杰、陈瑶、刘旭斌三人共同翻译,第10章由栾云杰、陈瑶两人共同翻译。
致谢
感谢机械工业出版社华章分社引进了该书的中译本版权,这是该中译本得以面市的最核心要素。
感谢机械工业出版社华章分社的和静老师给予我们的支持和信任。因为这份信任,我们才有机会来翻译这本关于大数据和Apache Spark的书籍。
感谢本次翻译组的小伙伴们。翻译本书的过程,是一种学习与思考的结合,也是和伙伴合作与交流的经历。非常庆幸遇到了睿智又勤奋的伙伴,即使在繁忙的工作和节奏极快的生活中,也努力完成了翻译和审阅计划。
另外,也要感谢我们的家人对我们的支持,正是有他们的支持和鼓励,我们才能坚持下来。

图书目录

译者序

前言
关于作者
第1章 了解Spark 1
1.1 什么是Apache Spark 1
1.2 Spark作业和API 2
1.2.1 执行过程 2
1.2.2 弹性分布式数据集 3
1.2.3 DataFrame 4
1.2.4 Dataset 5
1.2.5 Catalyst优化器 5
1.2.6 钨丝计划 5
1.3 Spark 2.0的架构 6
1.3.1 统一Dataset和DataFrame 7
1.3.2 SparkSession介绍 8
1.3.3 Tungsten Phase 2 8
1.3.4 结构化流 10
1.3.5 连续应用 10
1.4 小结 11
第2章 弹性分布式数据集 12
2.1 RDD的内部运行方式 12
2.2 创建RDD 13
2.2.1 Schema  14
2.2.2 从文件读取 14
2.2.3 Lambda表达式 15
2.3 全局作用域和局部作用域 16
2.4 转换 17
2.4.1 .map(...)转换 17
2.4.2 .filter(...)转换 18
2.4.3 .flatMap(...)转换 18
2.4.4 .distinct(...)转换 18
2.4.5 .sample(...)转换 19
2.4.6 .leftOuterJoin(...)转换 19
2.4.7 .repartition(...)转换 20
2.5 操作 20
2.5.1 .take(...)方法 21
2.5.2 .collect(...)方法 21
2.5.3 .reduce(...)方法 21
2.5.4 .count(...)方法 22
2.5.5 .saveAsTextFile(...)方法 22
2.5.6 .foreach(...)方法 23
2.6 小结 23
第3章 DataFrame 24
3.1 Python到RDD之间的通信 24
3.2 Catalyst优化器刷新 25
3.3 利用DataFrame加速PySpark 27
3.4 创建DataFrame 28
3.4.1 生成自己的JSON数据 29
3.4.2 创建一个DataFrame 29
3.4.3 创建一个临时表 30
3.5 简单的DataFrame查询 31
3.5.1 DataFrame API查询 32
3.5.2 SQL查询 32
3.6 RDD的交互操作 33
3.6.1 使用反射来推断模式 33
3.6.2 编程指定模式 34
3.7 利用DataFrame API查询 35
3.7.1 行数 35
3.7.2 运行筛选语句 35
3.8 利用SQL查询 36
3.8.1 行数 36
3.8.2 利用where子句运行筛选语句  36
3.9 DataFrame场景——实时飞行性能 38
3.9.1 准备源数据集 38
3.9.2 连接飞行性能和机场 39
3.9.3 可视化飞行性能数据 40
3.10 Spark数据集(Dataset)API 41
3.11 小结 42
第4章 准备数据建模 43
4.1 检查重复数据、未观测数据和异常数据(离群值) 43
4.1.1 重复数据 43
4.1.2 未观测数据 46
4.1.3 离群值 50
4.2 熟悉你的数据  51
4.2.1 描述性统计 52
4.2.2 相关性 54
4.3 可视化 55
4.3.1 直方图 55
4.3.2 特征之间的交互 58
4.4 小结 60
第5章  MLlib介绍 61
5.1 包概述 61
5.2 加载和转换数据 62
5.3 了解你的数据 65
5.3.1 描述性统计 66
5.3.2 相关性 67
5.3.3 统计测试 69
5.4 创建最终数据集 70
5.4.1 创建LabeledPoint形式的RDD 70
5.4.2 分隔培训和测试数据 71
5.5 预测婴儿生存机会 71
5.5.1 MLlib中的逻辑回归 71
5.5.2 只选择最可预测的特征 72
5.5.3 MLlib中的随机森林 73
5.6 小结 74
第6章 ML包介绍 75
6.1 包的概述 75
6.1.1 转换器 75
6.1.2 评估器 78
6.1.3 管道 80
6.2 使用ML预测婴儿生存几率 80
6.2.1 加载数据 80
6.2.2 创建转换器 81
6.2.3 创建一个评估器 82
6.2.4 创建一个管道 82
6.2.5 拟合模型 83
6.2.6 评估模型的性能 84
6.2.7 保存模型 84
6.3 超参调优 85
6.3.1 网格搜索法 85
6.3.2 Train-validation 划分 88
6.4 使用PySpark ML的其他功能 89
6.4.1 特征提取 89
6.4.2 分类 93
6.4.3 聚类 95
6.4.4 回归 98
6.5 小结 99
第7章 GraphFrames 100
7.1 GraphFrames介绍 102
7.2 安装GraphFrames 102
7.2.1 创建库 103
7.3 准备你的航班数据集 105
7.4 构建图形 107
7.5 执行简单查询 108
7.5.1 确定机场和航班的数量 108
7.5.2 确定这个数据集中的最长延误时间 108
7.5.3 确定延误和准点/早到航班的数量对比 109
7.5.4 哪一班从西雅图出发的航班最有可能出现重大延误 109
7.5.5 西雅图出发到哪个州的航班最有可能出现重大延误 110
7.6 理解节点的度 110
7.7 确定最大的中转机场 112
7.8 理解Motif 113
7.9 使用PageRank确定机场排名 114
7.10 确定最受欢迎的直飞航班 115
7.11 使用广度优先搜索 116
7.12 使用D3将航班可视化 118
7.13 小结 119
第8章 TensorFrames 120
8.1 深度学习是什么 120
8.1.1 神经网络和深度学习的必要性 123
8.1.2 特征工程是什么 125
8.1.3 桥接数据和算法 125
8.2 TensorFlow是什么 127
8.2.1 安装PIP 129
8.2.2 安装TensorFlow  129
8.2.3 使用常量进行矩阵乘法 130
8.2.4 使用placeholder进行矩阵乘法 131
8.2.5 讨论 132
8.3 TensorFrames介绍 133
8.4 TensorFrames快速入门 134
8.4.1 配置和设置 134
8.4.2 使用TensorFlow向已有列添加常量 136
8.4.3 Blockwise reducing操作示例 137
8.5 小结 139
第9章 使用Blaze实现混合持久化 141
9.1 安装Blaze 141
9.2 混合持久化 142
9.3 抽象数据 143
9.3.1 使用NumPy 数组  143
9.3.2 使用pandas的DataFrame 145
9.3.3 使用文件 145
9.3.4 使用数据库 147
9.4 数据操作 149
9.4.1 访问列 150
9.4.2 符号转换 150
9.4.3 列的操作 151
9.4.4 降阶数据 152
9.4.5 连接 154
9.5 小结 156
第10章 结构化流 157
10.1 什么是Spark Streaming 157
10.2 为什么需要Spark Streaming 159
10.3 Spark Streaming应用程序数据流是什么 160
10.4 使用DStream简化Streaming应用程序 161
10.5 全局聚合快速入门 165
10.6 结构化流介绍 168
10.7 小结 172
第11章 打包Spark应用程序 173
11.1 spark-submit命令 173
11.2 以编程方式部署应用程序 176
11.2.1 配置你的SparkSession  176
11.2.2 创建SparkSession  177
11.2.3 模块化代码 177
11.2.4 提交作业 180
11.2.5 监控执行 182
11.3 Databricks作业 184
11.4 小结 186

教学资源推荐
作者: [美] 卢博米尔·佩尔科维奇(Ljubomir Perkovic) 著
作者: 钱晓捷 编著
参考读物推荐
作者: (美)Kris Jamsa
作者: 罗攀 蒋仟 编著
作者: 吴茂贵 王冬 李涛 杨本法 著
作者: 徐顺发 编著