本书以Spark 3.x和Scala 2.x为主线,全面介绍了Spark及其生态体系中常用大数据项目的安装和使用。全书共10章,分别讲解了Scala语言基础、Spark基础、Spark RDD、Spark SQL、HBase、Kafka、Spark Streaming、Structured Streaming和Spark MLlib,并在最后完整开发了一个在线教育学生学习情况分析系统,帮助读者巩固前面所学的内容。
本书附有配套视频、教学PPT、教学设计、测试题等资源,同时,为了帮助初学者更好地学习本书中的内容,还提供了在线答疑,欢迎读者关注。
本书可以作为高等院校数据科学与大数据技术及相关专业的教材,并适合大数据开发初学者、大数据分析与挖掘的从业者阅读。
加入综合项目案例,帮助读者了解Spark在实际应用场景中的使用。
详细解释代码内容,以便读者更容易理解。
知识点结构清晰,由浅入深地讲解Spark的原理、架构和应用。
整合教材、资源和服务,提供一体化的学习平台。
强调实战导向,注重应用型人才培养。
党的二十大指出实践没有止境,理论创新也没有止境。随着互联网技术的快速发展,各种数字设备、传感器、物联网设备等在全球范围内产生了海量数据。这些数据以几何速度爆发性增长,给传统的数据处理方式带来了前所未有的挑战。如何满足大规模数据处理的需求,成了一个热门的研究课题,基于这种需求,人们需要新的技术来处理海量数据。
Spark提供了快速、通用、可扩展的大数据处理分析引擎,有效解决了海量数据的分析、处理问题,因此基于Spark的各种大数据技术得到了广泛应用和普及。自Spark项目问世以来,Spark生态系统不断壮大,越来越多的大数据技术基于Spark进行开发和应用,在国内外各企业中得到了广泛应用,对于要往大数据方向发展的读者而言,学习Spark是一个不错的选择。
本书在《Spark大数据分析与实战》基础上进行了改版,优化了原书内容,并进行了以下调整。
●新增了Spark流式计算引擎Structured Streaming的讲解。
●调整了项目实现和背景,使项目的内容更加丰富。
●调整了部分需求的实现方式,增强了教学的实用性。
●调整了知识讲解的结构,更符合循序渐进的学习规律。
●添加素质教育的内容,将素质教育的内容与专业知识有机结合。
本书基于Spark 3.x和Scala 2.x,循序渐进地介绍了Spark的相关知识以及Spark生态体系一些常用的组件和开源大数据项目。本书共10章,具体内容如下。
●第1章主要讲解什么是Scala以及Scala编程相关知识。
●第2章主要介绍什么是Spark,以及部署Spark的方式,并通过Spark Shell和一个简单的案例介绍Spark的使用。
●第3、4章主要讲解如何使用Spark的两个组件Spark RDD和Spark SQL进行数据处理,并利用这两个组件处理和操作不同的数据源。
●第5、6章主要介绍Spark生态体系常用开源大数据项目的原理和使用,并利用HBase实现数据存储和Kafka实现数据的生产和消费。
●第7~9章主要讲解如何使用Spark的3个组件Spark Streaming、Structured Streaming和Spark MLlib,并利用这3个组件实现数据的实时处理和通过模型推荐数据。
●第10章通过一个完整的实战项目,指导读者灵活运用Spark及其生态系统进行简单的项目开发。
在学习过程中,读者如果遇到困难,建议不要纠结于某个地方,可以先往后学习。通常来讲,通过逐渐深入的学习,前面不懂和产生疑惑的知识点也就能够理解了。在学习编程和部署环境的过程中,一定要多动手实践,如果在实践的过程中遇到问题,建议多思考,厘清思路,认真分析问题发生的原因,并在问题解决后及时总结经验。
前言Spark大数据分析与实战(第2版)本书配套服务
为了提升您的学习或教学体验,我们精心为本书配备了丰富的数字化资源和服务,包括在线答疑、教学大纲、教学设计、教学PPT、教学视频、测试题、源代码等。通过这些配套资源和服务,我们希望让您的学习或教学变得更加高效。请扫描下方二维码获取本书配套资源和服务。
致谢
本书的编写和整理工作由传智教育完成,全体参编人员在编写过程中付出了辛勤的劳动,除此之外还有许多试读人员参与了本书的试读工作并给出了宝贵的建议,在此一并表示衷心的感谢。
意见反馈
本书难免有不妥之处,欢迎读者提出宝贵意见。在阅读本书时,如果发现任何问题或有不认同之处,可以通过电子邮件与编者联系。请发送电子邮件至itcast_book@vip.sina.com。
传智教育黑马程序员2025年1月于北京
第1章Scala语言基础1
1.1Scala概述1
1.1.1初识Scala1
1.1.2Scala的安装2
1.1.3在IntelliJ IDEA中安装Scala插件6
1.1.4Scala初体验8
1.2Scala的基础语法12
1.2.1变量12
1.2.2常量12
1.2.3数据类型13
1.2.4运算符15
1.2.5控制结构语句16
1.2.6方法和函数26
1.3Scala数据结构29
1.3.1数组29
1.3.2元组35
1.3.3集合36
1.4Scala面向对象43
1.4.1类和对象43
1.4.2单例对象46
1.4.3继承47
1.4.4特质49
1.5本章小结51
1.6课后习题51
第2章Spark基础53
2.1初识Spark53
2.1.1Spark概述53
2.1.2Spark的特点54
2.1.3Spark应用场景55
2.1.4Spark与MapReduce的区别55
2.2Spark基本架构及运行流程56
2.2.1基本概念56
2.2.2Spark基本架构57
2.2.3Spark运行流程58
2.3Spark的部署模式59
2.4部署Spark59
2.4.1基于Local模式部署Spark59
2.4.2基于Standalone模式部署Spark61
2.4.3基于High Availability模式部署Spark66
2.4.4基于Spark on YARN模式部署Spark70
2.5Spark初体验71
2.6Spark Shell73
2.6.1Spark Shell命令74
2.6.2读取HDFS文件实现词频统计74
2.7案例开发Spark程序76
2.7.1环境准备76
2.7.2基于本地模式开发Spark程序80
2.7.3基于集群模式开发Spark程序81
2.8本章小结84
2.9课后习题84
目录Spark大数据分析与实战(第2版)第3章Spark RDD弹性分布式数据集86
3.1RDD简介86
3.2RDD的创建87
3.2.1基于文件创建RDD87
3.2.2基于数据集合创建RDD89
3.3RDD的处理过程89
3.3.1转换算子90
3.3.2行动算子97
3.4RDD的分区102
3.5RDD的依赖关系103
3.6RDD机制105
3.6.1持久化机制105
3.6.2容错机制106
3.7Spark的任务调度107
3.7.1DAG的概念107
3.7.2RDD在Spark中的运行流程108
3.8本章小结109
3.9课后习题110
第4章Spark SQL结构化数据处理模块111
4.1Spark SQL的基础知识111
4.1.1Spark SQL的简介111
4.1.2Spark SQL架构112
4.2DataFrame的基础知识113
4.2.1DataFrame简介113
4.2.2DataFrame的创建114
4.2.3DataFrame的常用操作117
4.2.4DataFrame的函数操作120
4.3RDD转换为DataFrame130
4.3.1反射机制推断Schema130
4.3.2编程方式定义Schema132
4.4Dataset的基础知识133
4.4.1Dataset简介133
4.4.2Dataset的创建134
4.5Spark SQL操作数据源135
4.5.1Spark SQL操作MySQL136
4.5.2Spark SQL操作Hive139
4.6本章小结141
4.7课后习题141
第5章HBase分布式数据库143
5.1HBase的基础知识143
5.1.1HBase的简介143
5.1.2HBase的数据模型144
5.2深入学习HBase原理145
5.2.1HBase架构145
5.2.2物理存储146
5.2.3HBase读写数据流程147
5.3搭建HBase高可用集群149
5.4HBase的基本操作154
5.4.1HBase的Shell操作154
5.4.2HBase的Java API操作160
5.5HBase集成Hive167
5.6本章小结172
5.7课后习题172
第6章Kafka分布式发布订阅消息系统173
6.1消息队列简介173
6.2Kafka简介176
6.3Kafka工作原理176
6.3.1Kafka的基本架构176
6.3.2Kafka工作流程179
6.4搭建Kafka集群180
6.5Kafka的基本操作182
6.5.1Kafka的Shell操作183
6.5.2Kafka的Scala API操作186
6.6Kafka Streams190
6.6.1Kafka Streams概述191
6.6.2Kafka Streams实现单词计数功能191
6.7本章小结194
6.8课后习题195
第7章Spark Streaming实时计算框架197
7.1实时计算概述197
7.2Spark Streaming的概述198
7.2.1Spark Streaming简介198
7.2.2Spark Streaming的工作原理200
7.3Spark Streaming的DStream200
7.4Spark Streaming的编程模型201
7.5Spark Streaming的API操作202
7.5.1输入操作202
7.5.2转换操作205
7.5.3输出操作214
7.5.4窗口操作218
7.5.5案例电商网站实时热门品类统计223
7.6Spark Streaming整合Kafka226
7.7本章小结229
7.8课后习题229
第8章Structured Streaming流计算引擎231
8.1Spark Streaming的不足231
8.2Structured Streaming概述232
8.2.1Structured Streaming简介232
8.2.2Structured Streaming编程模型233
8.3Structured Streaming的API操作234
8.3.1输入操作234
8.3.2转换操作239
8.3.3输出操作242
8.4时间和窗口操作247
8.4.1时间的分类247
8.4.2窗口操作248
8.5案例物联网设备数据分析252
8.5.1准备数据252
8.5.2分析数据255
8.6本章小结259
8.7课后习题259
第9章Spark MLlib机器学习库261
9.1初识机器学习261
9.1.1什么是机器学习261
9.1.2机器学习的应用262
9.2Spark MLlib概述263
9.2.1Spark MLlib简介263
9.2.2Spark MLlib工作流程264
9.3数据类型265
9.4Spark MLlib基本统计269
9.4.1摘要统计270
9.4.2相关统计271
9.4.3分层抽样272
9.5分类273
9.5.1线性支持向量机274
9.5.2逻辑回归276
9.6案例构建电影推荐系统278
9.6.1案例分析278
9.6.2案例实现279
9.7本章小结282
9.8课后习题282
第10章综合案例在线教育学生学习情况分析系统284
10.1系统概述284
10.1.1系统背景介绍284
10.1.2系统流程分析285
10.2Redis的安装和启动286
10.3模块开发构建项目结构287
10.4模块开发在线教育数据的生成288
10.5模块开发实时分析学生答题情况288
10.6模块开发实时推荐题目288
10.7模块开发学生答题情况离线分析289
10.8模块开发数据可视化289
10.9本章小结289