Spark全栈数据分析
  • 推荐1
  • 收藏2
  • 浏览916

Spark全栈数据分析

[美] Russell Jurney (作者)  王道远 (译者)

  • 书  号:978-7-121-35166-2
  • 出版日期:2018-11-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:刘恩惠
电子书 ¥69.00
购买电子书
纸质版 ¥99.00
本书介绍了作者提出的基于Spark 的敏捷数据科学方法论,结合作者在行业中多年的实际工作经验,为数据科学团队提供了一套以类似敏捷开发的方法开展数据科学研究的实践方法。书中展示了工业界一些常见工具的使用,包括从前端显示到后端处理的各个环节,手把手地帮助数据科学家快速将理论转化为真正面向用户的应用程序,从而让读者在利用数据创造真正价值的同时,也能不断完善自己的研究。

本书适合初学者阅读,数据科学家、工程师、分析师都能在本书中有所收获。
手把手教你建立自己的敏捷数据分析平台,最大化地挖掘数据价值!
王道远,毕业于浙江大学,目前就职于阿里巴巴计算平台事业部,在加入阿里巴巴之前,曾在英特尔亚太研发有限公司大数据部门工作了五年。
前言

写作本书第1 版的那段日子里,我刚好因为一次车祸而残疾,每天忍受疼痛折磨,双手也有些不听使唤。当时,一个叫作“职业浏览器”的项目的失败经历正困扰着我,为了从阴影中走出来,我用iPad 在床上和沙发上写完了本书,尽管那时我的手都没办法切菜了。我在那个项目发布前几周受了伤,还想着坚持把项目做上线,日夜奋战,非常痛苦。在做项目的过程中,我们犯了许多低级错误,让我一直垂头丧气。最终产品糟透了。项目失败的挫折感不时让我难受,而我背部的慢性疼痛更是很少放过我。我的心脏也出了一些问题,心率下降了三分之一,记忆力也出现了衰退。我仿佛进入了一个幽暗的空间,难以找到出路。我要恢复起来,与失败抗争。说来有些奇怪,为了让自己恢复,我写了第1 版书。我要把我能给团队同事的指导写下来,确保下一个项目成功。我想让自己摆脱这段经历。更重要的是,我想通过帮助别人,让我的人生重新获得意义,不让自己被残疾击垮。这样一件为大众服务以确保其他人不会重复我的错误的好事,我认为是值得去做的。那个失败项目暴露出了一个比我自身的处境更严重的问题,那就是大多数研究都停留在纸面上,从未让能够获益的人实际使用到。这本书就是一剂良方,是应用性研究的方法论,让研究成果能以产品的形式真正面世。

虽然听起来有些戏剧性,但我还是想在介绍第2 版之前提一提写第1 版时的个人情况。尽管那一版书对我来说有特殊的意义,但对于数据科学这个欣欣向荣的领域而言只做出了很小的贡献。但是我为它而自豪。我在那本书中获得了救赎,它让我重新找回了感觉,让我及时从病痛中恢复,让我摆脱失败的痛苦而获得了成就的喜悦,这就是第1版的情况。

在第2 版中,我希望能做到更多。简单地说,我希望能引导初出茅庐的数据科学家,让其快速成长为数据分析应用开发者。我把自己在三个Hadoop 团队与一个Spark 团队中获得的构建分析应用的经验进行了总结和提炼。这次改版中,编程语言使用的是数据科学的通用语言Python,而选择的大数据平台是Spark。希望本书能成为读者的必备指南,让读者快速学会如何构建足以应对各种数据规模的分析应用。

Spark 取代Hadoop/MapReduce 成为了处理大规模数据的主流方式,因此我们在这一版中使用Spark 来讲解。不仅如此,根据我们团队在工作中对敏捷数据科学的进一步理解,本书对敏捷数据科学方法论的理论和发展也做了进一步完善。希望第1版的读者还可以从第2版中获得提高,也希望比起相对更适合Hadoop 用户阅读的第1 版,这一版能更好地服务于Spark 用户。

敏捷数据科学有两大目标:一是为了使用Python 和Spark 搭建出任意规模的数据分析应用,二是帮助产品团队学会使用敏捷的方式协作开发分析应用来保障工作成效。





本书目标读者

本书的目的是帮助初学者和初出茅庐的数据科学家成长为数据科学与数据分析团队的主力成员。本书想要帮助工程师、分析师、数据科学家以敏捷的方式来使用Hadoop 在大数据上进行工作。本书介绍的敏捷方法论很适合大数据领域。

本书是为需要开发软件来分析数据的程序员而写的。设计师和产品经理可能更适合第1 章、第2 章和第5 章,这些章节主要作为敏捷过程的导论,没有专注于编码运行。

本书假设你在类UNIX 环境中工作,没有为Windows 用户提供示例,不过Windows 用户可以使用Cygwin 尝试。

本书主要结构

本书分为两个部分。第Ⅰ部分介绍的是我们在第Ⅱ部分中需要用到的数据集和工具集。第Ⅰ部分故意写得简明扼要,只是为了尽可能快地介绍这些工具。第Ⅱ部分会更深入地探讨这些工具的使用,所以如果在读第Ⅰ部分时感觉有些不知所措也不用担心。第Ⅰ部分的章节如下。

第1 章 理论

介绍敏捷数据科学的方法论。

第2 章 敏捷工具

介绍要用的工具集,并且讲解工具如何上手与安装。

第3 章 数据

描述本书中使用的数据集。

第Ⅱ部分是我们使用敏捷数据科学来构建一个分析应用的教程。这是一份笔记本式的分析应用构建指南。我们逐层攀登数据价值金字塔,始终应用敏捷的原则。这一部分会展示在敏捷迭代进程中一步一步发掘数据价值的方法。第Ⅱ部分由以下所列章节组成。

第4 章 记录收集与展示

帮你下载航班数据,并且通过网络应用展示航班记录。

第5 章 使用图表进行数据可视化

一步步引导你如何在网络应用中加入一些简单的图表来展示数据。

第6 章 通过报表探索数据

教你如何从数据中提取出实体关系,将其参数化并相互关联以创建交互式的报表。

第7 章 进行预测

在先前所做的基础上对某一航班准点与否进行预测。

第8 章 部署预测系统

展示如何部署预测系统来确保真正发挥作用。

第9 章 改进预测结果

不断迭代提高我们的准点航班预测应用的表现。

附录A 安装手册

展示如何安装所需工具。

目录

目录
前言 xiv
第Ⅰ部分 准备工作
第1章 理论 3
导论 3
定义 5
方法学 5
敏捷数据科学宣言 6
瀑布模型的问题 10
研究与应用开发 11
敏捷软件开发的问题 14
最终质量:偿还技术债 14
瀑布模型的拉力 15
数据科学过程 16
设置预期 17
数据科学团队的角色 18
认清机遇与挑战 19
适应变化 21
过程中的注意事项 23
代码审核与结对编程 25
敏捷开发的环境:提高生产效率 25
用大幅打印实现想法 27
第2章 敏捷工具 29
可伸缩性=易用性 30
敏捷数据科学之数据处理 30
搭建本地环境 32
配置要求 33
配置Vagrant 33
下载数据 33
搭建EC2环境 34
下载数据 38
下载并运行代码 38
下载代码 38
运行代码 38
Jupyter笔记本 39
工具集概览 39
敏捷开发工具栈的要求 39
Python 3 39
使用JSON行和Parquet序列化事件 42
收集数据 45
使用Spark进行数据处理 45
使用MongoDB发布数据 48
使用Elasticsearch搜索数据 50
使用Apache Kafka分发流数据 54
使用PySpark Streaming处理流数据 57
使用scikit-learn与Spark MLlib进行机器学习 58
使用 Apache Airflow(孵化项目)进行调度 59
反思我们的工作流程 70
轻量级网络应用 70
展示数据 73
本章小结 75
第3章 数据 77
飞行航班数据 77
航班准点情况数据 78
OpenFlights数据库 79
天气数据 80
敏捷数据科学中的数据处理 81
结构化数据vs.半结构化数据 81
SQL vs. NoSQL 82
SQL 83
NoSQL与数据流编程 83
Spark: SQL + NoSQL 84
NoSQL中的表结构 84
数据序列化 85
动态结构表的特征提取与呈现 85
本章小结 86
第Ⅱ部分 攀登金字塔
第4章 记录收集与展示 89
整体使用 90
航班数据收集与序列化 91
航班记录处理与发布 94
把航班记录发布到MongoDB 95
在浏览器中展示航班记录 96
使用Flask和pymongo提供航班信息 97
使用Jinja2渲染HTML5页面 98
敏捷开发检查站 102
列出航班记录 103
使用MongoDB列出航班记录 103
数据分页 106
搜索航班数据 112
创建索引 112
发布航班数据到Elasticsearch 113
通过网页搜索航班数据 114
本章小结 117
第5章 使用图表进行数据可视化 119
图表质量:迭代至关重要 120
用发布/装饰模型伸缩数据库 120
一阶形式 121
二阶形式 122
三阶形式 123
选择一种形式 123
探究时令性 124
查询并展示航班总数 124
提取“金属”(飞机(实体)) 132
提取机尾编号 132
评估飞机记录 139
数据完善 140
网页表单逆向工程 140
收集机尾编号 142
自动化表单提交 143
从HTML中提取数据 144
评价完善后的数据 147
本章小结 148
第6章 通过报表探索数据 149
提取航空公司为实体 150
使用PySpark把航空公司定义为飞机的分组 150
在MongoDB中查询航空公司数据 151
在Flask中构建航空公司页面 151
添加回到航空公司页面的链接 152
创建一个包括所有航空公司的主页 153
整理半结构化数据的本体关系 154
改进航空公司页面 155
给航空公司代码加上名称 156
整合维基百科内容 158
把扩充过的航空公司表发布到MongoDB 159
在网页上扩充航空公司信息 160
调查飞机(实体) 162
SQL嵌套查询vs.数据流编程 164
不使用嵌套查询的数据流编程 164
Spark SQL中的子查询 165
创建飞机主页 166
在飞机页面上添加搜索 167
创建飞机制造商的条形图 172
对飞机制造商条形图进行迭代 174
实体解析:新一轮图表迭代 177
本章小结 183
第7章 进行预测 185
预测的作用 186
预测什么 186
预测分析导论 187
进行预测 187
探索航班延误 189
使用PySpark提取特征 193
使用scikit-learn构建回归模型 198
读取数据 198
数据采样 199
向量化处理结果 200
准备训练数据 201
向量化处理特征 201
稀疏矩阵与稠密矩阵 203
准备实验 204
训练模型 204
测试模型 205
小结 207
使用Spark MLlib构建分类器 208
使用专用结构加载训练数据 208
处理空值 210
用Route(路线)替代FlightNum(航班号) 210
对连续变量分桶以用于分类 211
使用pyspark.ml.feature向量化处理特征 219
用Spark ML做分类 221
本章小结 223
第8章 部署预测系统 225
把scikit-learn应用部署为网络服务 225
scikit-learn模型的保存与读取 226
提供预测模型的准备工作 227
为航班延误回归分析创建API 228
测试API 232
在产品中使用API 232
使用Airflow部署批处理模式Spark ML应用 234
在生产环境中收集训练数据 235
Spark ML模型的训练、存储与加载 237
在MongoDB中创建预测请求 239
从MongoDB中获取预测请求 245
使用Spark ML以批处理模式进行预测 248
用MongoDB保存预测结果 252
在网络应用中展示批处理预测结果 253
用Apache Airflow(孵化项目)自动化工作流 256
小结 264
用Spark Streaming部署流式计算模式Spark ML应用 264
在生产环境中收集训练数据 265
Spark ML模型的训练、存储、读取 265
发送预测请求到Kafka 266
用Spark Streaming进行预测 277
测试整个系统 283
本章小结 285
第9章 改进预测结果 287
解决预测的问题 287
什么时候需要改进预测 288
改进预测表现 288
黏附试验法:找出黏性好的 288
为试验建立严格的指标 289
把当日时间作为特征 298
纳入飞机数据 302
提取飞机特征 302
在分类器模型中纳入飞机特征 305
纳入飞行时间 310
本章小结 313
附录A 安装手册 315
安装Hadoop 315
安装Spark 316
安装MongoDB 317
安装MongoDB的Java驱动 317
安装mongo-hadoop 318
编译mongo-hadoop 318
安装pymongo_spark 318
安装 Elasticsearch 318
安装Elasticsearch的Hadoop支持库 319
配置我们的Spark环境 320
安装 Kafka 320
安装scikit-learn 320
安装Zeppelin 321

读者评论

电子书版本

  • Epub

推荐用户

相关图书

Python统计可视化之Altair探索分析实践指南

刘大成 (作者)

本书以Altair为核心工具,通过认识数据、理解数据和探索数据全方位地探索分析数据集的统计可视化形式,以应用数据和案例研究为实践场景,使用Altair数据加工箱...

 

实用推荐系统

Kim Falk (作者) 李源 朱罡罡 温睿 (译者)

要构建一个实用的“智能”推荐系统,不仅需要有好的算法,还需要了解接收推荐的用户。本书分为两部分,第一部分侧重于基础架构,主要介绍推荐系统的工作原理,展示如何创建...

¥119.00

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)

龚正 吴治辉 闫健勇 (作者)

Kubernetes是由谷歌开源的容器集群管理系统,为容器化应用提供了资源调度、部署运行、服务发现、扩缩容等一整套功能。Kubernetes也是将“一切以服务(...

 

Harbor权威指南

张海宁 邹佳 王岩 尹文开 任茂盛 等 (作者)

在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库Harbor展开全面讲解,由Harbor开源项目维护者和贡献者倾力...

 

集成学习:基础与算法

Zhi-Hua Zhou (作者) 李楠 (译者)

集成学习方法是一类先进的机器学习方法,这类方法训练多个学习器并将它们结合起来解决一个问题,在实践中获得了巨大成功。<br>全书分为三部分。第一部分主要介绍集成学...

¥89.00

Kubernetes源码剖析

郑东旭 (作者)

本书主要分析了Kubernetes核心功能的实现原理,是一本帮助读者了解Kubernetes架构设计及内部原理实现的书。由于Kubernetes代码量较大,源码...