描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111651000
Spark编程全国总决赛等奖团队实战总结,提供Spark快速学习路线图。
11个综合实践案例和110个余个具体示例,透彻讲解Spark编程方法。
免费提供高清学习视频及电子书(涵盖虚拟机、Linux、Shell编程及Scala语言),一站式全方位夯实大数据开发基础。
本书配以大量的示例、源代码和注释,可以帮助读者快速、全面而又深入地掌握Spark编程技能。
本书既可作为高等院校大数据、云计算和人工智能相关专业的教材,也可以作为Spark学习者和大数据研发人员的技术参考书。
前言
第1章 Spark与大数据1
1.1 大数据开发基础1
1.1.1 什么是大数据1
1.1.2 大数据开发的通用步骤2
1.1.3 大数据开发技术4
1.2 初识Spark10
1.2.1 Spark是什么10
1.2.2 Spark的技术特点11
1.3 Spark技术栈12
1.4 Spark重要组件13
1.4.1 Spark Core13
1.4.2 Spark SQL14
1.4.3 GraphX15
1.4.4 流数据处理16
1.4.5 SparkR17
1.4.6 MLlib/ML18
1.4.7 Spark交互工具18
1.5 Spark和Scala19
1.5.1 Scala语言简介19
1.5.2 为什么用Scala开发Spark框架20
1.5.3 为什么用Scala开发Spark程序20
1.5.4 Scala开发Spark程序所涉及的
技术20
1.5.5 Scala语言基础21
1.6 如何快速掌握Spark21
1.6.1 Spark学习的痛点21
1.6.2 Spark快速学习路线图22
1.6.3 Spark学习中的关键点23
1.6.4 利用本书相关资源高效学习Spark23
1.6.5 本书所使用的软件和版本25
1.7 练习25
第2章 构建Spark运行环境26
2.1 Spark程序运行时架构26
2.2 构建Spark大数据运行环境28
2.2.1 构建HDFS28
2.2.2 构建Yarn30
2.2.3 构建Spark集群31
2.3 运行Spark程序(Local方式)31
2.4 运行Spark程序(分布式方式)32
2.4.1 Spark on Yarn32
2.4.2 Spark on Standalone36
2.5 Spark程序在spark-shell上运行41
2.6 使用Web UI监控Spark程序
运行43
2.7 扩展集群节点48
2.8 练习49
第3章 开发一个Spark程序51
3.1 在命令行模式下开发Spark程序51
3.1.1 构建Scala程序编译环境51
3.1.2 使用Vim编写Spark程序53
3.1.3 使用命令编译、打包Spark程序54
3.1.4 运行Spark程序56
3.1.5 使用java命令运行Spark程序57
3.1.6 Spark程序编译、运行、部署的
关键点58
3.2 使用IDEA开发Spark程序58
3.2.1 IDEA安装和基本使用59
3.2.2 使用IDEA编辑Spark代码60
3.2.3 IDEA编译、打包62
3.2.4 IDEA远程提交Spark程序63
3.3 练习64
第4章 深入理解Spark程序代码66
4.1 Spark程序代码结构66
4.2 Spark程序代码的核心概念68
4.2.1 RDD68
4.2.2 Application68
4.2.3 Job69
4.2.4 DAG70
4.2.5 Stage72
4.2.6 Task76
4.2.7 Application、Job、Stage和Task的
并行粒度和并行条件77
4.3 Spark程序代码执行过程77
4.4 练习85
第5章 RDD编程86
5.1 RDD核心概念86
5.1.1 Transformation的基本概念87
5.1.2 Action的基本概念88
5.1.3 Partition的基本概念88
5.2 创建RDD89
5.2.1 使用parallelize/makeRDD
创建RDD89
5.2.2 使用textFile创建RDD91
5.2.3 其他RDD创建操作92
5.3 RDD Partition93
5.3.1 Partition的基本操作94
5.3.2 Partition的分区过程96
5.3.3 Partition和Task98
5.3.4 计算Partition的个数100
5.3.5 Partition的综合应用103
5.4 Transformation操作107
5.4.1 map操作107
5.4.2 flatMap操作111
5.4.3 mapPartitions操作113
5.4.4 join操作115
5.4.5 union操作120
5.4.6 intersection操作121
5.4.7 groupBy操作123
5.4.8 groupByKey操作124
5.4.9 reduceByKey操作125
5.4.10 aggregateByKey操作127
5.4.11 cogroup操作129
5.5 Action操作130
5.5.1 collect操作130
5.5.2 reduce操作130
5.5.3 fold操作131
5.5.4 aggregate操作133
5.5.5 foreachPartition操作134
5.5.6 saveAsTextFile操作135
5.5.7 saveAsObjectFile操作135
5.6 RDD的cache/persist和
checkpoint操作136
5.6.1 cache/persist和checkpoint概述136
5.6.2 cache/persist使用注意事项137
5.6.3 cache/persist操作138
5.6.4 checkpoint操作139
5.7 练习140
第6章 Spark SQL结构化数据处理142
6.1 Spark SQL的核心概念142
6.1.1 结构化数据和非结构化数据142
6.1.2 DataFrame143
6.1.3 Dataset144
6.1.4 Persistent Table和Data
Warehouse145
6.1.5 SQL146
6.1.6 SparkSession147
6.2 Spark SQL数据处理概述147
6.2.1 Spark SQL数据处理环境147
6.2.2 Spark SQL处理结构化数据149
6.2.3 Spark SQL处理不同数据源的
数据150
6.3 构建Spark SQL运行环境150
6.3.1 Spark SQL运行环境概述150
6.3.2 构建最简的Spark SQL运行环境151
6.3.3 构建兼容Hive的Spark SQL运行
环境153
6.4 DataFrame/Dataset快速上手157
6.4.1 DataFrame/Dataset使用概述157
6.4.2 在spark-shell中使用DataFrame/
Dataset157
6.4.3 在代码中使用DataFrame/Dataset161
6.4.4 DataFrame/Dataset使用上的区别163
6.4.5 DataFrame行解析方法164
6.4.6 DataFrame和Dataset转换164
6.5 DataFrame/Dataset与数据源的
转换165
6.5.1 DataFrame/Dataset与数据源的转换
关系和方法概述165
6.5.2 DataFrame/Dataset与Seq的转换167
6.5.3 DataFrame/Dataset与RDD的
转换169
6.5.4 DataFrame/Dataset文件与Sequence
文件的转换170
6.5.5 DataFrame/Dataset与CSV文件的
转换170
6.5.6 DataFrame/Dataset与JSON文件的
在大数据开发中,大数据处理是其中十分关键、必不可少的一环。Spark 是主流的通用大数据处理平台,因此,要学习大数据开发,必然要学习 Spark。
近年来,作者在大数据教学上,尤其是在 Spark 技术的应用和推广上进行了一系列有益的尝试。
? 在全国较早地开设了云计算及大数据相关课程。
? 在全国较早地对本科生开展了系统、深入的 Spark编程训练。
? 主讲的Spark实战视频课程在51CTO学院长期排名大数据(Spark分类)课程的年销量第一。
? 作者指导 3 支 Spark 零基础本科生团队参加了 3 届全国性Spark编程比赛(第二届、第三届和第四届全国高校云计算应用创新大赛技能赛),在同多支 985/211 高校的参赛队角逐中,我们的本科生队战胜了多支研究生队,共获得全国总决赛二等奖两次,三等奖一次。
? 此外,编者指导的云计算和大数据作品,参加国家级科技创新竞赛,共获得全国特等奖一次,一等奖两次。
在此期间,编者接触并培养了大量的零基础 Spark 学习者,总结出 Spark 初学者的四个共性问题。
? 内容繁杂,理不清头绪:Spark 的学习内容太多,哪些是必须学的?先学哪个?后学哪个?漫无目的地学,只会导致事倍功半。
? 基础不够:Spark 开发需要大量的前置知识,例如虚拟机、Linux 命令、网络基础、分布式系统基础和编程语言等,很多都是理论和实践结合在一起的,有一个问题搞不定,就会卡住进行不下去。
? Scala难以学习:Scala 语法晦涩难懂,读 Spark 的 Scala API,明明很简单的函数,却看起来像天书。
? 无法动手:看了大量的Spark编程书籍,明白了 Spark 的技术原理,但是无法将自己的想法实现成Spark程序,更不用说利用Spark特性进行优化了。
为此,编者编写了这本《Spark 大数据编程实用教程》,力图能够帮助 Spark 初学者快速掌握Spark编程技能,少走弯路,具体做法如下。
? 针对第一个问题,本书总结 Spark 学习的痛点,构建了 Spark 快速学习路线图,为读者提供一条清晰明确的学习路径;结合编者自身的开发经验,按照 20/80 原则,精选Spark学习中的重难点,帮助读者快速、深入地掌握Spark。
? 针对第二个问题,本书提供了一站式 Spark 前置课程资源,包括虚拟机、Linux 和Shell 编程等免费高清视频,这些视频在“网易云课堂”上学习人数多,好评度高。每门课大概 10 个小视频,短小精悍,每个视频时长 15min 以内,即使零基础也可快速入门。
? 针对第三个问题,本书采用 Scala 作为Spark应用的开发语言,每个 API 和关键示例代码都有详细讲解,帮助读者在实战中快速掌握 Scala;同时,本书还提供配套编写的《零基础快速入门 Scala》免费电子书,精选 Scala 知识点,帮助读者在短时间内快速入门Scala。
? 针对第四个问题,本书提供了非常多的 Spark 示例,它们来源于编者团队 5 年 Spark项目开发、3 年 Spark 全国编程大赛的实践经验。每个示例都有说明,关键代码有解释,还有测试数据和运行方法,非常适合自学。可以帮助读者迅速上手,全面、深入地掌握Spark编程技能,快速积累Spark开发经验。
本书共10章,分别是Spark与大数据、构建 Spark 运行环境、开发第一个Spark程序、深入理解Spark 程序代码、RDD 编程、Spark SQL 结构化数据处理、Spark Streaming、Structured Streaming、Spark R和GraphX。
在章节分工上,艾叔负责整个大纲的拟定,以及第 1、2、3、4、5、6、7、8 章的编写;艾叔、汪忠洋共同完成第9、10章的编写。
本书既可作为高等院校大数据、云计算和人工智能相关专业的教材,也可以作为Spark学习者和大数据研发人员的技术参考书。
感谢机械工业出版社的胡毓坚总编、和庆娣编辑、王斌编辑的大力支持。正是由于他们专业、热情和不辞辛苦的付出,才成就了本书,在此表示衷心的感谢!
感谢我的妻子,她营造了一个很好环境,让我能够安心写书,此书能够顺利出版,与她的包容和支持是密不可分的;感谢我的女儿,虽然她不懂书的内容,却总能给我以最温暖的鼓励;感谢我的父母,他们默默的支持是我前行的动力!
感谢一直以来,关心帮助我成长的家人、老师、领导、同学和朋友们!
谨以此书献给我曾学习、工作和生活多年的母校,虽然现已离开,但仍将铭记校训继续前行!
由于时间紧、任务急,书中难免有疏漏之处,如果阅读过程中有任何疑问,可通过作者邮箱:[email protected],或作者微信及公众号:艾叔编程联系我们。
编 者
2020.01
评论
还没有评论。