当前: 首页 - 图书专区 - Spark大数据分析:核心概念、技术及实践
Spark大数据分析:核心概念、技术及实践


  在线购买
[美]穆罕默德?古勒(Mohammed Guller)著
978-7-111-56561-1
69.00
260
2017年05月13日
赵斌 马景 陈冠诚 译
计算机 > 数据库 > 综合
Apress
429
简体中文
16
Big Data Analytics with Spark: A Practitioner's Guide to Using Spark for Large Scale Data Analysis
店面
大数据技术丛书








本书是关于大数据和 Spark 的一个简明手册。它将助你学习如何用 Spark 来完成很多大数据分析任务,其中覆盖了高效利用 Spark 所需要知道的重要主题:如何使用 Spark Shell 进行交互式数据分析、如何编写 Spark 应用、如何在Spark 中对大规模数据进行交互分析、如何使用Spark Streaming 处理高速数据流、如何使用 Spark 进行机器学习、 如何使用Spark 进行图处理、 如何使用集群管理员部署 Spark、如何监控 Spark 应用等。本书还对其他配合Spark 一起使用的大数据技术进行了介绍,包括 HDFS、Avro、Parquet、Kafka、Cassandra、HBase、Mesos 等。本书也对机器学习和图的概念进行了介绍。
资深Spark专家撰写,涵盖高效使用Spark需要的所有技术
既全面讲解Spark核心概念和基本原理,又通过丰富的代码示例阐释Spark的实践应用

Scala是当前非常热门的函数式编程语言,同时它也是编写 Spark应用使用的语言。本书将介绍使用 Scala 进行函数式编程的基础知识,以及如何使用 Scala 来编写 Spark 应用。本书还对其他配合 Spark 一起使用的大数据技术进行了介绍,包括 HDFS、Avro、Parquet、Kafka、Cassandra、HBase、Mesos 等;同时讲解了机器学习和图的概念。本书涵盖使用 Spark 所需要的所有技术。

通过阅读本书,你将学到:
使用Scala编写用于处理、分析大规模数据的Spark应用
在 Spark中使用SQL和HiveQL来对大规模数据进行交互分析
使用Spark Streaming处理高速数据流
使用MLlib和Spark ML开发机器学习应用
使用GraphX对面向图的数据进行分析并实现图算法
使用独立集群管理员、YARN或Mesos部署Spark
监控Spark应用

作者简介
穆罕默德·古勒(Mohammed Guller)
Glassbeam的首席架构师,主要负责高级分析和预测分析产品的开发。他是大数据和 Spark 专家,经常受邀在与大数据相关的会议上发表演讲。他对于新产品构建、大数据分析和机器学习充满热情。加入 Glassbeam 之前,Mohammed是TrustRecs.com 的创始人,并曾就职于IBM和几个高科技创业公司,成功主导了诸多创新技术产品从概念到发布的全过程。

译者简介
赵斌 主要从事运维开发、测试开发方面的工作,有丰富的实战经验。关注后台开发技术和各种编程语言,对机器学习有浓厚的兴趣。
马景 互联网开发工程师,毕业于北京航空航天大学。关注领域:数据分析与可视化,以及互联网开发。他还是果壳网和数盟网翻译组成员,曾参与翻译、校对Coursera课程及开源书籍《数据+设计》。

内容简介
本书是一本为Spark初学者准备的书,涵盖高效使用Spark需要的所有技术。作者首先介绍基本的Scala语法,然后介绍作为基石的Spark Core,再对Spark的各大组件Streaming、SQL、Mlib、GraphX进行详细介绍,最后讲解Spark集群管理。书中不仅给出了丰富的示例代码,还对Spark的核心概念和基本原理进行了较为全面的介绍,让你不仅知其然且知其所以然。通过本书,你可以快速上手Spark,把Spark应用到实践中。
本书是大数据和Spark方面的一本简明易懂的手册。它将助你学习如何用Spark来完成很多大数据分析任务。它覆盖了高效利用Spark所需要知道的一切内容。
购买本书的好处之一就是:帮你高效学习Spark,节省你大量时间。本书所覆盖的主题在互联网上都可以找到,网上有很多关于Spark的博客、PPT和视频。事实上,Spark的资料浩如烟海,你可能需要在网络上不同地方花费数月来阅读关于Spark的点滴和碎片知识。本书提供了一个更好的选择:内容组织精妙,并以易懂的形式表现出来。
本书的内容和材料的组织基于我在不同的大数据相关会议上所组织的Spark研讨会。与会者对于内容和流程方面的积极反馈激励我写了这本书。
书和研讨会的区别之一在于后者具有交互性。然而,组织过几次Spark研讨会后,我了解到了人们普遍存在的问题,我把这些内容也收录在本书中。如果阅读本书时有问题,我鼓励你们通过LinkedIn或Twitter联系我。任何问题都可以问,不存在什么“愚蠢的问题”。
本书没有覆盖Spark的每一个细节,而是包含了高效使用Spark所需要知道的重要主题。我的目标是帮你建立起坚实的基础。一旦基础牢固,就可以轻松学习一项新技术的所有细节。另外,我希望保持本书尽可能简单。如果读完本书后发现Spark看起来也挺简单的,那我的目的也就达到了。
本书中的任何主题都不要求有先验知识。本书会一步步介绍关键概念,每一节建立在前一节的基础上。同样,每一章都是下一章的基石。如果当下不需要,你可以略过后面一些章节中讲解的不同的Spark库。不过我还是鼓励你阅读所有章节。即使可能和你当前的项目不相关,那些部分也可能会给你新的灵感。
通过本书你会学到很多Spark及其相关技术的知识。然而,要充分利用本书,建议亲自运行书中所展示的例子:用代码示例做实验。当你写代码并执行时,很多事情就变得更加清晰。如果你一边阅读一边练习并用示例来实验,当读完本书时,你将成为一名基础扎实的Spark开发者。
在我开发Spark应用时,我发现了一个有用的资源—Spark官方API文档,其访问地址为http://spark.apache.org/docs/latest/api/scala。初学者可能觉得它难以理解,不过一旦你学习了基本概念后,会发现它很有用。
另一个有用的资源是Spark邮件列表。Spark社区很活跃、有用。不仅Spark开发者会回答问题,有经验的Spark用户也会志愿帮助新人。无论你遇到什么问题,很有可能Spark邮件列表中有人已经解决过这个问题了。
而且,也可以联系我,我很乐意倾听,欢迎反馈、建议和提问。

—Mohammed Guller
LinkedIn: www.linkedin.com/in/mohammedguller
Twitter: @MohammedGuller
译者序
前言
致谢
第1章 大数据技术一览1
1.1 Hadoop2
1.1.1 HDFS3
1.1.2 MapReduce5
1.1.3 Hive5
1.2 数据序列化6
1.2.1 Avro6
1.2.2 Thrift6
1.2.3 Protocol Buffers7
1.2.4 SequenceFile7
1.3 列存储7
1.3.1 RCFile8
1.3.2 ORC8
1.3.3 Parquet9
1.4 消息系统9
1.4.1 Kafka10
1.4.2 ZeroMQ11
1.5 NoSQL12
1.5.1 Cassandra13
1.5.2 HBase13
1.6 分布式SQL查询引擎14
1.6.1 Impala14
1.6.2 Presto14
1.6.3 Apache Drill15
1.7 总结15
第2章 Scala编程16
2.1 函数式编程16
2.1.1 函数17
2.1.2 不可变数据结构18
2.1.3 一切皆表达式19
2.2 Scala基础19
2.2.1 起步20
2.2.2 基础类型20
2.2.3 变量21
2.2.4 函数21
2.2.5 类24
2.2.6 单例24
2.2.7 样本类25
2.2.8 模式匹配25
2.2.9 操作符26
2.2.10 特质26
2.2.11 元组27
2.2.12 Option类型27
2.2.13 集合28
2.3 一个单独的Scala应用程序32
2.4 总结32
第3章 Spark Core33
3.1 概述33
3.1.1 主要特点33
3.1.2 理想的应用程序36
3.2 总体架构37
3.2.1 worker37
3.2.2 集群管理员38
3.2.3 驱动程序38
3.2.4 执行者38
3.2.5 任务38
3.3 应用运行38
3.3.1 术语38
3.3.2 应用运行过程39
3.4 数据源39
3.5 API40
3.5.1 SparkContext40
3.5.2 RDD41
3.5.3 创建RDD42
3.5.4 RDD操作43
3.5.5 保存RDD52
3.6 惰性操作53
3.7 缓存54
3.7.1 RDD的缓存方法55
3.7.2 RDD缓存是可容错的56
3.7.3 缓存内存管理56
3.8 Spark作业56
3.9 共享变量57
3.9.1 广播变量57
3.9.2 累加器58
3.10 总结59
第4章 使用Spark shell进行交互式数据分析60
4.1 起步60
4.1.1 下载60
4.1.2 解压61
4.1.3 运行61
4.2 REPL命令62
4.3 把Spark shell当成Scala shell使用62
4.4 数值分析63
4.5 日志分析64
4.6 总结68
第5章 编写Spark应用69
5.1 Spark中的Hello World69
5.2 编译并运行应用72
5.2.1 sbt72
5.2.2 编译代码73
5.2.3 运行应用73
5.3 监控应用75
5.4 调试应用75
5.5 总结76
第6章 Spark Streaming77
6.1 Spark Streaming简介78
6.1.1 Spark Streaming是一个Spark类库78
6.1.2 总体架构78
6.1.3 数据流来源78
6.1.4 接收器79
6.1.5 目的地79
6.2 API79
6.2.1 StreamingContext80
6.2.2 Spark Streaming应用基本结构82
6.2.3 DStream82
6.2.4 创建DStream83
6.2.5 处理数据流84
6.2.6 输出操作88
6.2.7 窗口操作91
6.3 一个完整的Spark Streaming应用93
6.4 总结98
第7章 Spark SQL99
7.1 Spark SQL简介99
7.1.1 和其他Spark库集成100
7.1.2 可用性100
7.1.3 数据源100
7.1.4 数据处理接口100
7.1.5 与Hive的互操作性101
7.2 性能101
7.2.1 磁盘I/O101
7.2.2 分区102
7.2.3 列存储102
7.2.4 内存中的列式缓存102
7.2.5 行跳过102
7.2.6 谓词下推102
7.2.7 查询优化103
7.3 应用104
7.3.1 ETL104
7.3.2 数据可视化104
7.3.3 分布式JDBC/ODBC SQL查询引擎105
7.3.4 数据仓库105
7.4 API106
7.4.1 关键抽象106
7.4.2 创建DataFrame109
7.4.3 在程序中使用SQL/HiveQL处理数据114
7.4.4 使用DataFrame API处理数据115
7.4.5 保存DataFrame131
7.5 内置函数133
7.5.1 聚合操作134
7.5.2 集合操作134
7.5.3 日期/时间134
7.5.4 数学135
7.5.5 字符串135
7.5.6 窗口135
7.6 UDF和UDAF135
7.7 一个交互式分析的例子135
7.8 使用Spark SQL JDBC服务器进行交互式分析142
7.9 总结145
第8章 使用Spark进行机器学习146
8.1 机器学习简介146
8.1.1 特征147
8.1.2 标签147
8.1.3 模型148
8.1.4 训练数据148
8.1.5 测试数据149
8.1.6 机器学习应用149
8.1.7 机器学习算法151
8.1.8 超参数160
8.1.9 模型评价160
8.1.10 机器学习的主要步骤162
8.2 Spark机器学习库162
8.3 MLlib概览163
8.3.1 与其他Spark库集成163
8.3.2 统计工具163
8.3.3 机器学习算法163
8.4 MLlib API164
8.4.1 数据类型164
8.4.2 算法和模型166
8.4.3 模型评价181
8.5 MLlib示例应用184
8.5.1 数据集184
8.5.2 目标184
8.5.3 代码184
8.6 Spark ML186
8.6.1 ML数据集187
8.6.2 Transformer187
8.6.3 Estimator187
8.6.4 Pipeline188
8.6.5 PipelineModel188
8.6.6 Evaluator188
8.6.7 网格搜索189
8.6.8 CrossValidator189
8.7 Spark ML示例应用189
8.7.1 数据集190
8.7.2 目标190
8.7.3 代码190
8.8 总结195
第9章 使用Spark进行图处理196
9.1 图简介196
9.1.1 无向图197
9.1.2 有向图197
9.1.3 有向多边图197
9.1.4 属性图197
9.2 GraphX简介198
9.3 GraphX API199
9.3.1 数据抽象199
9.3.2 创建图200
9.3.3 图属性202
9.3.4 图操作符204
9.4 总结217
第10章 集群管理员218
10.1 独立集群管理员218
10.1.1 架构219
10.1.2 建立一个独立集群219
10.1.3 在独立集群中运行Spark应用221
10.2 Apache Mesos223
10.2.1 架构223
10.2.2 建立一个Mesos集群224
10.2.3 在Mesos集群上运行Spark应用224
10.3 YARN226
10.3.1 架构226
10.3.2 在YARN集群上运行Spark应用228
10.4 总结228
第11章 监控229
11.1 监控独立集群229
11.1.1 监控Spark master229
11.1.2 监控Spark worker232
11.2 监控Spark应用233
11.2.1 监控一个应用所运行的作业234
11.2.2 监控一个作业的不同阶段235
11.2.3 监控一个阶段中的任务236
11.2.4 监控RDD存储238
11.2.5 监控环境243
11.2.6 监控执行者244
11.2.7 监控Spark流应用244
11.2.8 监控Spark SQL查询246
11.2.9 监控Spark SQL JDBC/ODBC服务器246
11.3 总结247
参考文献248
近几年来,大数据处理技术越来越受到大家的关注,各项新技术相继出现,Spark就是其中的佼佼者。Spark立足于内存计算,其基于RDD的计算模型可以兼顾MapReduce和迭代型计算。此外,它还可以拓展至流式计算、机器学习、图计算等领域。正是由于Spark通用、快速的特点,越来越多的公司采用Spark来搭建大数据计算平台,并在其上进行相应的开发。
本书是一本为Spark初学者准备的入门书。虽说是入门,但涵盖了Spark日常使用的方方面面。本书从基本的Scala语法讲起,进而介绍作为基石的Spark Core。在此基础之上,再对Spark的各大组件Streaming、SQL、MLlib、GraphX进行了详细的介绍。最后,以Spark集群管理作为结尾。书中不仅给出了示例代码,还对Spark的核心概念和基本原理进行了较为全面的介绍,让读者不仅知其然且知其所以然。通过本书,读者可以快速上手Spark,并且把Spark应用到实践中。
本书得以完成离不开各方的支持,感谢机械工业出版社各位编辑的大力支持和有益的建议。在翻译的过程中,来自家人和朋友的鼓励与支持也让我深受感动。
Spark本身也在不断发展中,在本书翻译期间官方发布了Spark 2.0,在提升性能的同时引入了若干重大更新。本人已尽量以注解的形式保证本书内容对Spark 2.0的可用性。然而,由于本人学识有限,Spark涉及的知识面广,难免会有疏漏错误之处,恳请读者指正批评。

赵斌
计算机科学/大数据分析与处理
读者书评
发表评论



高级搜索
大数据治理与安全:从理论到开源实践
Python数据科学导论
Spark与Hadoop大数据分析


版权所有© 2017  北京华章图文信息有限公司 京ICP备08102525号 京公网安备110102004606号
通信地址:北京市百万庄南街1号 邮编:100037
电话:(010)68318309, 88378998 传真:(010)68311602, 68995260
高校教师服务
华章教育微信
诚聘英才
诚聘英才