第1章 Scala语言基础 1
1.1 初识Scala 1
1.1.1 Scala概述 1
1.1.2 Scala的下载安装 2
1.1.3 在IDEA开发工具中下载安装Scala插件 4
1.1.4 开发第一个Scala程序 6
1.2 Scala的基础语法 9
1.2.1 声明值和变量 9
1.2.2 数据类型 9
1.2.3 算术和操作符重载 10
1.2.4 控制结构语句 10
1.2.5 方法和函数 13
1.3 Scala的数据结构 15
1.3.1 数组 15
1.3.2 元组 18
1.3.3 集合 19
1.4 Scala面向对象的特性 24
1.4.1 类与对象 24
1.4.2 继承 25
1.4.3 单例对象和伴生对象 26
1.4.4 特质 28
1.5 Scala的模式匹配与样例类 29
1.5.1 模式匹配 30
1.5.2 样例类 31
1.6 本章小结 31
1.7 课后习题 32
第2章 Spark基础 33
2.1 初识Spark 33
2.1.1 Spark概述 33
2.1.2 Spark的特点 34
2.1.3 Spark应用场景 35
2.1.4 Spark与Hadoop对比 36
2.2 搭建Spark开发环境 37
2.2.1 环境准备 37
2.2.2 Spark的部署方式 37
2.2.3 Spark集群安装部署 38
2.2.4 Spark HA集群部署 41
2.3 Spark运行架构与原理 45
2.3.1 基本概念 45
2.3.2 Spark集群运行架构 45
2.3.3 Spark运行基本流程 46
2.4 体验第一个Spark程序 47
2.5 启动Spark-Shell 49
2.5.1 运行Spark-Shell命令 49
2.5.2 运行Spark-Shell读取HDFS文件 50
2.6 IDEA开发WordCount程序 52
2.6.1 以本地模式执行Spark程序 52
2.6.2 集群模式执行Spark程序 54
2.7 本章小结 58
2.8 课后习题 59
第3章 Spark RDD弹性分布式数据集 60
3.1 RDD简介 60
3.2 RDD的创建方式 61
3.2.1 从文件系统加载数据创建RDD 61
3.2.2 通过并行集合创建RDD 62
3.3 RDD的处理过程 63
3.3.1 转换算子 63
3.3.2 行动算子 67
3.3.3 编写WordCount词频统计案例 70
3.4 RDD的分区 71
3.5 RDD的依赖关系 71
3.6 RDD机制 73
3.6.1 持久化机制 73
3.6.2 容错机制 75
3.7 Spark的任务调度 76
3.7.1 DAG的概念 76
3.7.2 RDD在Spark中的运行流程 76
3.8 本章小结 78
3.9 课后习题 78
第4章 Spark SQL结构化数据文件处理 80
4.1 Spark SQL的基础知识 80
4.1.1 Spark SQL的简介 80
4.1.2 Spark SQL架构 81
4.2 DataFrame的基础知识 82
4.2.1 DataFrame简介 82
4.2.2 DataFrame的创建 83
4.2.3 DataFrame的常用操作 86
4.3 Dataset的基础知识 89
4.3.1 Dataset简介 89
4.3.2 Dataset对象的创建 89
4.4 RDD转换为DataFrame 90
4.4.1 反射机制推断Schema 90
4.4.2 编程方式定义Schema 92
4.5 Spark SQL操作数据源 94
4.5.1 操作MySQL 94
4.5.2 操作Hive数据集 96
4.6 本章小结 99
4.7 课后习题 99
第5章 HBase分布式数据库 101
5.1 HBase的基础知识 101
5.1.1 HBase的简介 101
5.1.2 HBase的数据模型 102
5.2 HBase的集群部署 103
5.3 HBase的基本操作 107
5.3.1 HBase的Shell操作 107
5.3.2 HBase的Java API操作 112
5.4 深入学习HBase原理 120
5.4.1 HBase架构 121
5.4.2 物理存储 122
5.4.3 寻址机制 123
5.4.4 HBase读写数据流程 124
5.5 HBase和Hive的整合 125
5.6 本章小结 130
5.7 课后习题 130
第6章 Kafka分布式发布订阅消息系统 132
6.1 Kafka的基础知识 132
6.1.1 消息传递模式简介 132
6.1.2 Kafka简介 133
6.2 Kafka工作原理 134
6.2.1 Kafka核心组件介绍 134
6.2.2 Kafka工作流程分析 136
6.3 Kafka集群部署与测试 138
6.3.1 安装Kafka 138
6.3.2 启动Kafka服务 140
6.4 Kafka生产者和消费者实例 141
6.4.1 基于命令行方式使用Kafka 141
6.4.2 基于Java API方式使用Kafka 143
6.5 Kafka Streams 148
6.5.1 Kafka Streams概述 149
6.5.2 Kafka Streams开发单词计数应用 149
6.6 本章小结 153
6.7 课后习题 153
第7章 Spark Streaming实时计算框架 155
7.1 实时计算的基础知识 155
7.1.1 什么是实时计算 155
7.1.2 常用的实时计算框架 155
7.2 Spark Streaming的基础知识 156
7.2.1 Spark Streaming简介 156
7.2.2 Spark Streaming工作原理 157
7.3 Spark的DStream 157
7.3.1 DStream简介 157
7.3.2 DStream编程模型 158
7.3.3 DStream转换操作 158
7.3.4 DStream窗口操作 164
7.3.5 DStream输出操作 168
7.3.6 DStream实例——实现网站热词排序 170
7.4 Spark Streaming整合Kafka实战 173
7.4.1 KafkaUtils.createDstream方式 173
7.4.2 KafkaUtils.createDirectStream方式 177
7.5 本章小结 180
7.6 课后习题 180
第8章 Spark MLlib机器学习算法库 182
8.1 初识机器学习 182
8.1.1 什么是机器学习 182
8.1.2 机器学习的应用 183
8.2 Spark机器学习库MLlib的概述 184
8.2.1 MLlib的简介 184
8.2.2 Spark机器学习工作流程 185
8.3 数据类型 186
8.3.1 本地向量 186
8.3.2 标注点 186
8.3.3 本地矩阵 187
8.4 Spark MLlib基本统计 188
8.4.1 摘要统计 188
8.4.2 相关统计 189
8.4.3 分层抽样 190
8.5 分类 191
8.5.1 线性支持向量机 191
8.5.2 逻辑回归 192
8.6 案例——构建推荐系统 193
8.6.1 推荐模型分类 194
8.6.2 利用MLlib实现电影推荐 194
8.7 本章小结 200
8.8 课后习题 200
第9章 综合案例——Spark实时交易数据统计 202
9.1 系统概述 202
9.1.1 系统背景介绍 202
9.1.2 系统架构设计 202
9.1.3 系统预览 203
9.2 Redis数据库 203
9.2.1 Redis介绍 204
9.2.2 Redis部署与启动 204
9.2.3 Redis操作及命令 205
9.3 模块开发——构建工程结构 206
9.4 模块开发——构建订单系统 211
9.4.1 模拟订单数据 211
9.4.2 向Kafka集群发送订单数据 212
9.5 模块开发——分析订单数据 215
9.6 模块开发——数据展示 219
9.6.1 搭建Web开发环境 219
9.6.2 实现数据展示功能 221
9.6.3 可视化平台展示 227
9.7 本章小结 228