新書推薦:
《
DK威士忌大百科
》
售價:NT$
1340.0
《
小白学编织
》
售價:NT$
299.0
《
Android游戏开发从入门到精通 第2版 王玉芹
》
售價:NT$
495.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
非对称创新:中国企业赶超战略 魏江 刘洋
》
售價:NT$
495.0
《
潜能觉醒
》
售價:NT$
395.0
《
初平:汉末群雄混战(190—195)
》
售價:NT$
245.0
《
建安:官渡大决战(196—200)
》
售價:NT$
245.0
|
內容簡介: |
本书是关于大数据和Spark的一个简明手册。它将助你学习如何用Spark来完成很多大数据分析任务,其中覆盖了高效利用Spark所需要知道的重要主题:如何使用SparkShell进行交互式数据分析、如何编写Spark应用、如何在Spark中对大规模数据进行交互分析、如何使用SparkStreaming处理高速数据流、如何使用Spark进行机器学习、如何使用Spark进行图处理、如何使用集群管理员部署Spark、如何监控Spark应用等。本书还对其他配合Spark一起使用的大数据技术进行了介绍,包括HDFS、Avro、Parquet、Kafka、Cassandra、HBase、Mesos等。本书也对机器学习和图的概念进行了介绍。
|
目錄:
|
Contents目录
译者序
前言
致谢
第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 磁盘IO101
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 分布式JDBCODBC SQL查询引擎105
7.3.4 数据仓库105
7.4 API106
7.4.1 关键抽象106
7.4.2 创建DataFrame109
7.4.3 在程序中使用SQLHiveQL处理数据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
|
內容試閱:
|
前言Preface本书是大数据和Spark方面的一本简明易懂的手册。它将助你学习如何用Spark来完成很多大数据分析任务。它覆盖了高效利用Spark所需要知道的一切内容。
购买本书的好处之一就是:帮你高效学习Spark,节省你大量时间。本书所覆盖的主题在互联网上都可以找到,网上有很多关于Spark的博客、PPT和视频。事实上,Spark的资料浩如烟海,你可能需要在网络上不同地方花费数月来阅读关于Spark的点滴和碎片知识。本书提供了一个更好的选择:内容组织精妙,并以易懂的形式表现出来。
本书的内容和材料的组织基于我在不同的大数据相关会议上所组织的Spark研讨会。与会者对于内容和流程方面的积极反馈激励我写了这本书。
书和研讨会的区别之一在于后者具有交互性。然而,组织过几次Spark研讨会后,我了解到了人们普遍存在的问题,我把这些内容也收录在本书中。如果阅读本书时有问题,我鼓励你们通过LinkedIn或Twitter联系我。任何问题都可以问,不存在什么愚蠢的问题。
本书没有覆盖Spark的每一个细节,而是包含了高效使用Spark所需要知道的重要主题。我的目标是帮你建立起坚实的基础。一旦基础牢固,就可以轻松学习一项新技术的所有细节。另外,我希望保持本书尽可能简单。如果读完本书后发现Spark看起来也挺简单的,那我的目的也就达到了。
本书中的任何主题都不要求有先验知识。本书会一步步介绍关键概念,每一节建立在前一节的基础上。同样,每一章都是下一章的基石。如果当下不需要,你可以略过后面一些章节中讲解的不同的Spark库。不过我还是鼓励你阅读所有章节。即使可能和你当前的项目不相关,那些部分也可能会给你新的灵感。
通过本书你会学到很多Spark及其相关技术的知识。然而,要充分利用本书,建议亲自运行书中所展示的例子:用代码示例做实验。当你写代码并执行时,很多事情就变得更加清晰。如果你一边阅读一边练习并用示例来实验,当读完本书时,你将成为一名基础扎实的Spark开发者。
在我开发Spark应用时,我发现了一个有用的资源Spark官方API文档,其访问地址为http:spark.apache.orgdocslatestapiscala。初学者可能觉得它难以理解,不过一旦你学习了基本概念后,会发现它很有用。
另一个有用的资源是Spark邮件列表。Spark社区很活跃、有用。不仅Spark开发者会回答问题,有经验的Spark用户也会志愿帮助新人。无论你遇到什么问题,很有可能Spark邮件列表中有人已经解决过这个问题了。
而且,也可以联系我,我很乐意倾听,欢迎反馈、建议和提问。
Mohammed GullerLinkedIn: www.linkedin.cominmohammedgullerTwitter: @MohammedGuller致谢Acknowledgements许多人都直接地或间接地为本书作出了贡献。如果没有他们的支持、鼓励与帮助,我是无法完成本书的编写的。我想借此机会向他们表示感谢。
首先,也是最重要的,我想要感谢我的妻子Tarannum和我的三个可爱的孩子Sarah、Soha、Sohail。写书是一项艰巨的任务。在从事全职工作的同时写书意味着我无法花费太多的时间在我的家人身上。上班时间我忙于工作,晚上和周末我则全身投入到本书的写作上。我对我家人给予的全方位的支持和鼓励表示感谢。有时候,Soha和Sohail会提出一些有意思的想法让我陪他们一起玩,但是在大部分时候,他们还是让我在本应该陪他们玩耍的时候专注于写书。
接下来,感谢Matei Zaharia、Reynold Xin、Michael Armbrust、Tathagata Das、Patrick Wendell、Joseph Bradley、Xiangrui Meng、Joseph Gonzalez、Ankur Dave以及其他Spark开发者。他们不仅创造出了一项卓越的技术,还持续快速改进它。没有他们的发明,本书将不会存在。
当我在Glassbeam公司提议使用Spark来解决当时困扰我们的一些问题时,Spark还是一项新技术且少有人了解。我想要感谢工程副总裁Ashok Agarwal和首席执行官Puneet Pandit允许我使用Spark。如果没有来自将Spark内置于产品中和日常使用的一手经验,要写出一本有关Spark的书是相当困难的。
接下来,我想感谢技术审校者Sundar Rajan Raman和Heping Liu。他们认真检查了本书内容的准确性并运行了书中的例子以确保它们能正常运行,还提出了不少有帮助的建议。
最后,我想感谢Apress参与本书出版的工作人员Chris Nelson、Jill Balzano、Kim Bur-ton-Weisman、Celestin John Suresh、Nikhil Chinnari、Dhaneesh Kumar等。Jill Balzano协调了与本书出版相关的所有工作。作为一个编辑,Chris Nelson为本书作出了卓越的贡献。我十分感谢他的建议与编辑,有了他的参与,本书变得更完美了。文字编辑Kim Burton-Weisman认真阅读了本书的每一句话以保证书写正确,同时也改正了不少书写错误。很荣幸能与Apress团队一起工作。
Mohammed Guller
|
|