首页>参考读物>计算机科学与技术>综合

大规模数据分析和建模:基于Spark与R
作者 : [美]哈维尔·卢拉辛(Javier Luraschi) 凯文·郭(Kevin Kuo) 埃德加·鲁伊斯(Edgar Ruiz)著
译者 : 魏博 译
出版日期 : 2020-07-22
ISBN : 978-7-111-66101-6
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 259
开本 : 16
原书名 : Mastering Spark with R: The Complete Guide to Large-Scale Analysis and Modeling
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

这本书的目的是帮助所有人通过R使用Apache Spark。第1章~第5章,简单地介绍了如何大规模执行数据科学和机器学习项目。第6~9章介绍了使用Spark进行集群计算中令人激动的基本概念。第10章~第13章涵盖一些高级主题,包括分布式R、Streaming和社区贡献等。

图书特色

图书前言

在信息呈指数级增长的世界中,Apache Spark等先进工具为我们解决今天面临的许多相关问题提供了支持。从在基于数据驱动的决策中寻找改进方法的公司,到解决医疗、金融、教育和能源问题的研究机构,Spark比以往任何时候都能更快、更可靠地分析更多信息。
人们编写了各种各样的书籍来学习Apache Spark。例如,Spark: The Definitive Guide是一本综合性的书籍,Learning Spark是一本介绍性的书籍,旨在帮助用户熟悉和运行Spark(两者都由O'Reilly出版)。然而,撰写本书时,既没有使用R语言学习Apache Spark的书籍,也没有专门为R用户或潜在的R用户设计的书籍。
有一些在线资源介绍了用R语言学习Apache Spark。最著名的是spark.rstudio.com网站和spark.apache.org网站上的Spark文档。这两个网站都是很好的在线资源,但是,上面的内容并不适合初学者。它们都假设读者对Apache Spark、R和集群计算有一定的了解。
这本书的目的是帮助所有人通过R使用Apache Spark。另外,由于R编程语言的目的是简化数据分析,我们相信这本书也可以为学习用Spark解决数据分析问题提供一条快捷途径。第1章提供了一个概述,帮助快速理解这些概念,并介绍了在计算机上处理这些问题所需的工具。然后,我们会快速进入相关的数据科学主题、集群计算和高级主题,即使是最有经验的用户也会对这部分内容感兴趣。
因此,本书旨在成为一个对广大用户有用的资源,从渴望学习Apache Spark的初学者,到希望理解为什么和如何通过R使用Apache Spark的有经验的读者,都可以从书中获益。
本书的结构如下:
介绍
12Apache SparkRSparkR
分析
在第3章中,你将学习如何使用R在Apache Spark中分析、探索、转换和可视化数据。
建模
45
规模化
69Apache Spark
扩展
10
高级技术
1113R
15SparkSpark
69SparkSparkSpark67
1013Spark

代码生成的表格的格式如下:
# A tibble: 3 x 2
numbers text

1 1 one
2 2 two
3 3 three
第一行描述表的维度(行数和列数),第二行是列名,第三行是列类型。我们在本书中使用的tibble包还提供了各种细微的视觉改进。
大多数绘图都使用ggplot2包和附录中提供的自定义主题进行渲染。但是,由于本书不关注数据可视化,因此我们只提供基本的绘图代码,其可能与实际中应用的格式不匹配。如果你有兴趣学习R中更多关于可视化的知识,可以考虑专门的书籍,比如R Graphics Cookbook('Reilly出版社)。
致谢
感谢那些允许通过R使用Spark程序包的作者:Javier Luraschi、Kevin Kuo、Kevin Ushey和JJ Allaire(sparklyr);Romain fran鏾is和Hadley Wickham(dbplyr);Hadley Wickham和Edgar Ruiz(dpblyr);Kirill Mülller(DBI);以及Apache Spark项目本身的作者及其最初作者Matei Zaharia。
感谢为丰富Spark和R生态系统而发布扩展程序包的作者:Akhil Nair(crassy);Harry Zhu(geospark);Kevin Kuo(graphframes、mleap、sparktf和sparkxgb);Jakub Hava、Navdeep Gill、Erin LeDell和Michal Malohlava(rsparkling);Jan Wijffels(spark.sas7bdat);Aki Ariga(sparkavro);Martin Studer(sparkbq);Matt Pollock(sparklyr.nested);Nathan Eastwood(sparkts);Samuel Macêdo(variantspark)。
感谢我们出色的编辑Melissa Potter为我们提供指导、鼓励和无数小时的详细反馈,这些努力使这本书成为我们的著作中最好的一本。
感谢Bradley Boehmke、Bryan Adams、Bryan Jonas、Dusty Turner和Hossein Falaki,感谢你们的技术评论、付出的时间和坦率的反馈,并与我们分享专业知识。多亏了你们,许多读者才会有更愉快的阅读体验。
感谢RStudio、JJ Allaire和Tareef Kawaf对这项工作的支持,感谢R社区的持续支持和鼓励。
Max Kuhn,感谢你对第4章的宝贵反馈。在他的允许下,我们采用了他的精彩著作Feature Engineering and Selection: A Practical Approach for Predictive Models(CRC出版社)中的例子。
我们也感谢所有间接参与但没有在这里明确列出的人们。我们真正站在了巨人的肩膀上。
这本书在R语言中用Yihui Xie的bookdown、JJ Allaire和Yihui Xie的rmarkdown、Yihui Xie的knitr写成;用Hadley Wickham和Winston Chang的ggplot2完成可视化;用Daniel Kallin和Javier Luraschi的nomnoml绘制图表;用John MacFarlane的pandoc进行文档转换。
本书约定
本书使用下列排版风格:
斜体(Italic)
表示新的术语、URL、电子邮箱地址、文件名和文件扩展名。
等宽字体(Constant width)
表示程序清单以及段落中引用的程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
等宽粗体(Constant width bold)
表示应由用户输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应该被用户提供的,或由上下文确定的值替换的文本。
用来表示注意事项或者建议。
用来表示一般的注释。

示例代码
可以从https://github.com/r-spark/the-r-in-spark下载补充材料(示例代码、练习等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O扲eilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O扲eilly的配套CD-ROM则需要O'Reilly出版社的许可。引用本书的示例代码来回答一个问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)你注明出处。注明出处的形式包含标题、作者、出版社和ISBN,例如:
Mastering Spark with R,作者为Javier Luraschi、Kevin Kuo和Edgar Ruiz,由O扲eilly出版,书号为978-1-492-04637-0
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permission@oreilly.com联系我们。
O'Reilly在线学习平台(O'Reilly Online Learning)
近40年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O扲eilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://oreilly/SparkwithR上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia

上架指导

计算机\数据科学

封底文字

如果你和大多数R语言用户一样,那你肯定喜欢统计学,也能够深入理解统计学。但是随着组织内部不断收集大量数据,添加Apache Spark这类工具就变得理所当然。在本书中,数据科学家和使用大规模数据应用的专业人员会学到如何使用Spark和R解决大数据和大计算问题。
作者会展示如何将Spark和R结合起来进行大数据分析。本书涵盖相关的数据科学话题、聚类计算,以及高级用户会感兴趣的问题。
? 在Apache Spark环境下,使用R来分析、探索、转换、可视化数据。
? 构建统计模型来提取信息并预测输出,自动化生产级的工作流程。
? 使用分布式计算技术在多台机器上进行分析和建模。
? 轻松使用Spark处理多个数据源和格式的大规模数据。
? 学习其他用于大规模图处理、地理空间分析和基因组学分析的建模框架。
? 深入高级话题,包括定制转换、实时数据处理和创建定制化Spark扩展。

“ 从编写了流行的sparklyr库的发明者身上,学习如何在R项目中利用分布式计算的力量。这是成为R高级用户的进阶之道。”
——Bryan Jonas
美国军事科学院数学系讲师

Javier Luraschi是诸多大规模数据科学库的发明者,包括sparklyr、r2d3、
pins和cloudml。
Kevin Kuo构建了机器学习库,并领导了Kasa AI的开放保险研究。
Edgar Ruiz构建了企业级的数据解决方案工具,包括dbplot、tidypredict和modeldb。

图书序言

Apache Spark是一个基于可扩展性构建的分布式计算平台:Spark的API使得合并来自多个数据源的输入变得很容易,并且使用多种编程语言和算法来处理输入进而构建数据应用程序。R是数据科学和统计学中最强大的语言之一,因此将R与Spark结合起来是非常有意义的。幸运的是,R丰富的语言特性使得从R调用Spark的API与在本地数据源上运行R类似。有了这两个系统的背景知识,你就能够在Spark中调用大量计算,或者从最喜欢的R编程环境中并行运行R代码了。
本书详细探讨了在R中使用Spark的方法,重点介绍了sparklyr包,它支持dplyr和R社区已有的其他包。本书还详细介绍了主要用例,例如,使用Spark引擎查询数据、探索性数据分析、机器学习、R代码的并行执行和流式处理。书中还介绍了运行Spark和监视作业执行。而作者正适合介绍这个话题—Javier、Kevin和Edgar一直参与sparklyr的项目开发。我很高兴看到他们把这本关于使用Spark和R的清晰而集中的指南写得这么好。
希望你也喜欢这本书,并通过它来提升你的R代码编写能力,并将其与更广泛的Spark生态系统的功能连接起来。这里的所有基础模块都是开源的,你可以毫不犹豫地向开发人员反馈改进这些工具的建议。

—Matei Zaharia
斯坦福大学助理教授,Databricks首席技术专家,
Apache Spark发明者

作者简介

[美]哈维尔·卢拉辛(Javier Luraschi) 凯文·郭(Kevin Kuo) 埃德加·鲁伊斯(Edgar Ruiz)著:Javier Luraschi是大规模数据科学诸多库的发明者,包括sparklyr、r2d3、pins和cloudml。
Kevin Kuo构建了机器学习库,并领导了Kasa AI的开放保险研究。
Edgar Ruiz构建了企业级的数据解决方案工具,包括dbplot、tidypredict和modeldb。

译者序

我们正在全面步入互联时代和智能时代。人们对数据产生和利用的需求从来没有如此迫切,从传统的社交网络、搜索引擎、移动支付、在线娱乐,到新兴的无人驾驶、智慧医疗、智能安防等行业,大数据逐渐成为各行各业的重要资产。而且,机器学习和深度学习技术的爆发和普及也使得每个人都可以在这个时代一展身手。因而掌握合适的数据科学语言和高效的计算引擎就成为每一个数据从业者的必备技能。
毫无疑问,R语言和Spark就是绝佳选择。R语言以其对于统计分析、建模和可视化的有力支持,成为很多数据科学家、算法人员和机器学习从业者的首选语言。而Spark则得益于其高效的计算性能和良好的接口,成为人们处理大数据问题的利器。长期以来,二者都在各自的领域开疆拓土,那么将二者结合起来会不会更有意义?答案是肯定的。借助Spark,R可以在分布式计算环境下发挥更大的效能;而通过R语言,Spark也可以轻松完成更多机器学习和数据分析的工作。更加自然的是,R语言和Spark都是基于内存的工具。sparklyr正是基于上述理解,完成了R和Spark的结合。
本书非常系统地介绍了sparklyr的背景知识、功能和一些进阶话题。其难能可贵之处在于,本书对于sparklyr的介绍非常到位,既介绍了基础的分析、建模操作,也介绍了高阶的调试和Spark扩展。最后本书为有志于开源的人提供了一些指引。应该说,本书的受众不限于数据科学的初级读者或者高级读者,每个阶段的人都可以从本书中发现有意义的内容。同时,本书用到的函数和模型,都有清晰的代码介绍,对于一些深入的知识点也有额外的参考文献和说明。相信你在学完本书后会受益匪浅。
本书的三位作者都有着丰富的大数据处理经验,因此本书的内容会涵盖Spark和R的方方面面。特别是Javier Luraschi,他作为sparklyr的发明者,同时也是市面上介绍Spark和R结合的最资深的人员,必然是最适合撰写这本书的人。Javier Luraschi熟稔Spark和R交互的各个方面,这也是本书在内容上优于其他书籍的原因。
对于译者,整个翻译过程也是一个学习和深化的过程。技术在不断地发展,学习也要不间断。感谢机械工业出版社能把本书的翻译工作交给我,这是对我的鼓励和肯定。然而,纵然对于数据科学流程、R语言、分布式计算等再熟悉,也不免有疏漏和误解,恳请读者批评指正。最后,希望这本书能够成为大数据计算领域的经典之作!

魏博
2020年3月24日于北京

图书目录

序言 1
前言 3
第1章 引言 9
1.1 概述 10
1.2 Hadoop 10
1.3 Spark 12
1.4 R 16
1.5 sparklyr 19
1.6 小结 20
第2章 开始 21
2.1 概述 21
2.2 预备操作 22
2.2.1 安装sparklyr 23
2.2.2 安装Spark 23
2.3 连接 24
2.4 使用Spark 25
2.4.1 网络接口 25
2.4.2 分析 28
2.4.3 建模 28
2.4.4 数据 30
2.4.5 扩展 30
2.4.6 分布式R 31
2.4.7 流式数据 31
2.4.8 日志 32
2.5 断开连接 33
2.6 使用RStudio 33
2.7 资源 35
2.8 小结 36
第3章 分析 37
3.1 概述 37
3.2 数据导入 40
3.3 数据整理 41
3.3.1 内置函数 42
3.3.2 相关性 43
3.4 可视化 45
3.4.1 使用ggplot2 46
3.4.2 使用dbplot 47
3.5 建模 49
3.6 沟通 51
3.7 小结 54
第4章 建模 56
4.1 概述 56
4.2 探索性数据分析 58
4.3 特征工程 65
4.4 监督式学习 68
4.4.1 广义线性回归 72
4.4.2 其他模型 73
4.5 非监督式学习 73
4.5.1 数据准备 74
4.5.2 主题建模 75
4.6 小结 77
第5章 管道操作 78
5.1 概述 78
5.2 创建工作 80
5.3 用例 81
5.4 操作模式 83
5.5 交互性 84
5.6 部署 86
5.6.1 批打分 87
5.6.2 实时打分 88
5.7 小结 90
第6章 集群 92
6.1 概述 92
6.2 本地化 94
6.2.1 管理器 94
6.2.2 发行版 98
6.3 云端 100
6.3.1 亚马逊 101
6.3.2 Databricks 102
6.3.3 谷歌 103
6.3.4 IBM 105
6.3.5 微软 106
6.3.6 Qubole 107
6.4 Kubernetes 107
6.5 工具 108
6.5.1 RStudio 108
6.5.2 Jupyter 109
6.5.3 Livy 110
6.6 小结 111
第7章 连接 112
7.1 概述 112
7.1.1 边缘节点 114
7.1.2 Spark主目录 114
7.2 本地模式 115
7.3 单机模式 116
7.4 YARN 116
7.4.1 YARN客户端 117
7.4.2 YARN集群 117
7.5 Livy 118
7.6 Mesos 120
7.7 Kubernetes 121
7.8 云模式 121
7.9 批量模式 122
7.10 工具 123
7.11 多次连接 123
7.12 故障排除 124
7.12.1 记录日志 124
7.12.2 Spark Submit 124
7.12.3 Windows 126
7.13 小结 126
第8章 数据 127
8.1 概述 127
8.2 读取数据 129
8.2.1 路径 129
8.2.2 模式 130
8.2.3 内存 131
8.2.4 列 132
8.3 写入数据 133
8.4 复制数据 134
8.5 文件格式 135
8.5.1 CSV 136
8.5.2 JSON 137
8.5.3 Parquet 138
8.5.4 其他 139
8.6 文件系统 140
8.7 存储系统 140
8.7.1 Hive 141
8.7.2 Cassandra 142
8.7.3 JDBC 142
8.8 小结 143
第9章 调试 144
9.1 概述 144
9.1.1 计算图 146
9.1.2 时间线 148
9.2 配置 148
9.2.1 连接设置 150
9.2.2 提交设置 151
9.2.3 运行时设置 152
9.2.4 sparklyr设置 153
9.3 分区 156
9.3.1 隐式分区 156
9.3.2 显式分区 157
9.4 缓存 158
9.4.1 检查点 159
9.4.2 内存 159
9.5 重洗 160
9.6 序列化 161
9.7 配置文件 161
9.8 小结 162
第10章 扩展 163
10.1 概述 163
10.2 H2O 165
10.3 图模型 169
10.4 XGBoost 173
10.5 深度学习 176
10.6 基因组学 179
10.7 空间数据 181
10.8 故障排除 183
10.9 小结 183
第11章 分布式R 185
11.1 概述 185
11.2 用例 187
11.2.1 定制解析器 188
11.2.2 分区建模 189
11.2.3 网格搜索 191
11.2.4 Web API 192
11.2.5 模拟 193
11.3 分区 194
11.4 分组 195
11.5 列 196
11.6 context参数 197
11.7 函数 198
11.8 程序包 199
11.9 集群需求 200
11.9.1 安装R 200
11.9.2 Apache Arrow 201
11.10 故障排除 203
11.10.1 工作节点日志 204
11.10.2 解决超时 205
11.10.3 检查分区 206
11.10.4 调试工作节点 206
11.11 小结 207
第12章 数据流 208
12.1 概述 208
12.2 转换 211
12.2.1 分析 212
12.2.2 建模 213
12.2.3 管道 214
12.2.4 分布式R 215
12.3 Kafka 216
12.4 Shiny 218
12.5 小结 220
第13章 社区贡献 221
13.1 概述 221
13.2 Spark API 223
13.3 Spark扩展 224
13.4 使用Scala代码 226
13.5 小结 228
附录A 补充参考代码 229

教学资源推荐
作者: Stephen R.Schach
作者: 周国烛 杨洪雪 主编
作者: [美]怀亚特·S. 纽曼(Wyatt S. Newman) 著
作者: (美)Jeffrey D. Ullman 斯坦福大学Jennifer Widom 著斯坦福大学岳丽华 金培权 万寿红 等译
参考读物推荐
作者: 甘等岱 王定 付国兰
作者: 中国计算机学会 主编
作者: (美)Christian Crumlish
作者: 娃娃鱼 著