第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
第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