当前位置:首页 > 工业技术
SPARK大数据分析  源码解析与实例详解
SPARK大数据分析  源码解析与实例详解

SPARK大数据分析 源码解析与实例详解PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:刘景泽编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2019
  • ISBN:9787121370519
  • 页数:422 页
图书介绍:讲解了网络大数据时代应运而生的、能高效迅捷地分析处理数据的工具——Spark,它带领读者快速掌握用Spark 收集、计算、简化和保存海量数据的方法,学会交互、迭代和增量式分析,解决分区、数据本地化和自定义序列化等问题。
《SPARK大数据分析 源码解析与实例详解》目录

第1篇 准备 2

第1章 认识大数据和Spark 2

1.1 大数据的介绍 2

1.2 Apache Spark能做什么 3

1.3 其他分布式数据处理框架 4

1.4 如何使用本书 4

1.4.1 需要提前具备的基础 4

1.4.2 准备相关开发环境 4

1.4.3 如何学习本书 5

第2章 安装与配置Spark集群 6

2.1 下载Spark安装包 6

2.2 检查与准备集群环境 7

2.3 了解目前集群中已经部署的框架服务 11

2.4 部署Spark集群 12

2.4.1 实例1:基于Standalone模式部署Spark集群 12

2.4.2 实例2:部署Spark的历史服务——Spark History Server 16

2.4.3 实例3:基于Standalone模式部署高可用的Master服务 18

2.4.4 实例4:基于YARN模式部署Spark集群 20

2.4.5 Standalone模式与YARN模式的特点 22

2.5 本章小结 23

第3章 第1个Spark程序 24

3.1 运行第1个Spark程序 24

3.1.1 实例5:基于Standalone模式运行第1个Spark程序 24

3.1.2 实例6:基于YARN模式运行第1个Spark程序 27

3.1.3 提交Spark程序时的参数规范 30

3.2 使用spark-shell编写并运行WordCount程序 30

3.2.1 实例7:启动spark-shell 31

3.2.2 实例8:在spark-shell中编写WordCount程序 32

3.3 使用IDEA编写并运行WordCount程序 34

3.3.1 实例9:准备开发环境,并构建代码工程 34

3.3.2 实例10:使用IDEA编写WordCount程序 41

3.3.3 实例11:在IDEA中本地运行WordCount程序 44

3.3.4 实例12:在IDEA中远程运行WordCount程序 46

3.3.5 实例13:打包程序并提交至集群运行 48

3.4 本章小结 49

第2篇 入门 52

第4章 读写分布式数据——基于Spark Core 52

4.1 RDD的诞生 52

4.2 进一步理解RDD 53

4.2.1 数据存储 53

4.2.2 数据分析 55

4.2.3 程序调度 56

4.3 读取数据并生成RDD 57

4.3.1 实例14:读取普通文本数据 58

4.3.2 实例15:读取JSON格式的数据 59

4.3.3 实例16:读取CSV、TSV格式的数据 61

4.3.4 实例17:读取SequenceFile格式的数据 62

4.3.5 实例18:读取Object格式的数据 64

4.3.6 实例19:读取HDFS中的数据——显式调用Hadoop API 66

4.3.7 实例20:读取MySQL数据库中的数据 68

4.4 保存RDD中的数据到外部存储系统 70

4.4.1 实例21:保存成普通文本文件 70

4.4.2 实例22:保存成JSON文件 71

4.4.3 实例23:保存成CSV、TSV文件 73

4.4.4 实例24:保存成SequenceFile文件 74

4.4.5 实例25:保存成Object文件 75

4.4.6 实例26:保存成HDFS文件——显式调用Hadoop API的方式 76

4.4.7 实例27:写入MySQL数据库 78

4.5 本章小结 80

第5章 处理分布式数据——基于Spark Core 81

5.1 RDD的转换(transformations)操作——转换数据形态 81

5.1.1 实例28:基础转换操作 81

5.1.2 实例29:键值对转换操作 103

5.2 RDD的行动(actions)操作——触发执行任务计划 115

5.2.1 实例30:基础行动操作 116

5.2.2 实例31:键值对行动操作 125

5.2.3 实例32:数值行动操作 127

5.3 本章小结 128

第3篇 进阶 130

第6章 RDD的高级操作 130

6.1 缓存RDD 130

6.1.1 缓存RDD的基础知识 130

6.1.2 实例33:缓存与释放RDD 133

6.2 RDD的检查点(Checkpoint)机制 139

6.2.1 了解Checkpoint机制 139

6.2.2 实例34:使用Checkpoint机制 141

6.2.3 Checkpoint机制的工作流程 144

6.3 RDD的依赖关系 145

6.3.1 窄依赖(narrow dependencies) 145

6.3.2 宽依赖(wide/shuffle dependencies) 148

6.3.3 实例35:让子RDD混合依赖多个父RDD 151

6.3.4 实例36:词频统计——总结运算过程中涉及的概念 153

6.4 累加器(Accumulator) 155

6.4.1 认识累加器 155

6.4.2 实例37:使用系统累加器1——长整数、双精度浮点数累加器 156

6.4.3 实例38:使用系统累加器2——集合累加器 159

6.4.4 实例39:自定义累加器 160

6.5 广播(Broadcast)——将数据块缓存到所有节点 164

6.5.1 认识广播 165

6.5.2 实例40:使用广播补全数据 165

6.6 本章小结 168

第7章 用SQL语法分析结构化数据——基于Spark SQL 169

7.1 为什么会产生Spark SQL 169

7.2 认识DataFrame与Dataset数据类型 170

7.2.1 认识DataFrame 170

7.2.2 认识Dataset 171

7.3 实例41:通过Dataset、DataFrame分析用户数据 172

7.3.1 用spark-shell编写程序 172

7.3.2 用IDEA编写程序 175

7.4 不同Spark版本的操作差异 177

7.4.1 认识SQLContext与HiveContext 178

7.4.2 认识SparkSession 178

7.5 DataFrame、Dataset的基本操作 179

7.5.1 DSL与SQL的语法风格 179

7.5.2 使用临时视图的注意事项 181

7.5.3 实例42:读取JSON、CSV格式的数据 183

7.5.4 实例43:读取Parquet格式的数据 185

7.5.5 实例44:读取代码中动态生成的数据 185

7.5.6 实例45:读取关系型数据库中的数据 188

7.5.7 实例46:输出Dataset、DataFrame中的数据 189

7.5.8 实例47:RDD、DataFrame、Dataset之间的相互转换 192

7.6 用户自定义函数 195

7.6.1 实例48:实现“一进一出”的UDF 195

7.6.2 实例49:实现“多进一出”的UDAF 198

7.6.3 实例50:实现“一进多出”的UDTF 208

7.7 集成Spark SQL与Hive 211

7.7.1 已经部署Hive框架 211

7.7.2 尚未部署Hive框架 215

7.8 本章小结 215

第8章 实时处理流式数据——基于Spark Streaming 216

8.1 为什么会产生Spark Streaming 216

8.2 第1个Spark Streaming程序 216

8.2.1 实例51:用spark-shell编写程序 216

8.2.2 实例52:用IDEA编写程序 221

8.3 什么是DStream 222

8.3.1 认识DStream 222

8.3.2 认识DStreamGraph 223

8.4 读取数据到DStream中 227

8.4.1 实例53:读取HDFS文件夹中的数据 227

8.4.2 实例54:读取RDD组成的数据队列 229

8.4.3 实例55:实时读取Flume中的数据 230

8.4.4 实例56:用高阶API实时读取Kafka中的数据 235

8.4.5 实例57:用低阶API实时读取Kafka中的数据 242

8.5 Spark Streaming中的几个时间概念 251

8.5.1 批处理间隔 251

8.5.2 窗口时间宽度与滑动时间宽度 252

8.5.3 实例58:使用窗口操作,每两秒统计10秒内的平均温度 254

8.6 DStream的操作总结 259

8.6.1 DStream的操作说明 259

8.6.2 实例59:直接面向DStream中的RDD进行数据分析 261

8.6.3 实例60:将DStream中的数据实时输出至外部存储系统 263

8.6.4 实例61:对Dstream进行join操作 267

8.7 DStream中的转换分类 269

8.7.1 无状态转换 269

8.7.2 有状态转换 270

8.7.3 实例62:用有状态转换做全局词频统计 270

8.8 在Spark Streaming中的缓存与Checkpoint 272

8.8.1 认识Spark Streaming中的Checkpoint 273

8.8.2 实例63:使用Spark Streaming中的Checkpoint 273

8.9 Spark Streaming中的累加器与广播变量 276

8.9.1 认识累加器与广播变量 276

8.9.2 实例64:自定义累加器,并结合无状态转换,实现实时的全局词频统计 276

8.10 关闭Spark Streaming程序 280

8.10.1 关闭程序的方案 281

8.10.2 合理关闭一个运行中的Spark Streaming程序 281

8.11 本章小结 284

第4篇 高阶 286

第9章 实时处理流式数据——基于Structured Streaming 286

9.1 为什么会产生Structured Streaming 286

9.2 第1个Structured Streaming程序 287

9.2.1 实例65:用spark-shell编写程序 287

9.2.2 实例66:用IDEA编写程序 289

9.3 Structured Streaming的编程模型 291

9.4 输入数据——生成Streaming Dataset、Streaming DataFrame 292

9.4.1 实例67:根据文件生成工作流 292

9.4.2 实例68:根据文件、文件夹生成自动分区的工作流 295

9.4.3 实例69:根据Kafka以Streaming模式生成工作流 297

9.4.4 实例70:以Kafka为数据源,通过Batch模式生成工作流 300

9.4.5 实例71:根据指定速率生成工作流 304

9.5 基于事件时间的窗口操作 305

9.5.1 事件时间窗口的工作方式 305

9.5.2 实例72:事件时间窗口的生成规则 307

9.5.3 实例73:基于事件时间窗口实现词频统计 311

9.6 基于Watermark处理延迟数据 314

9.6.1 Watermark的作用 314

9.6.2 实例74:基于Update模式实现词频统计,并结合Watermark处理延迟数据 314

9.6.3 实例75:基于Append模式实现词频统计,并结合Watermark处理延迟数据 320

9.6.4 Watermark的底层工作原理 322

9.6.5 总结:Watermark机制与输出模式 329

9.7 实例76:在处理流式数据时去除重复数据 330

9.8 Structured Streaming中的join操作 332

9.8.1 实例77:在Stream-Static模式下的innerjoin操作 333

9.8.2 实例78:在Stream-Stream模式下的inner join操作 335

9.8.3 总结:已经支持的join操作 340

9.9 在Structured Streaming中实现数据分组,并手动维护分组状态 341

9.9.1 实例79:通过mapGroupsWithState实现数据分组,并手动维护分组状态 341

9.9.2 实例80:通过flatMapGroupsWithState实现数据分组,并手动维护分组状态 347

9.9.3 总结:手动维护状态与Watermark的使用技巧 352

9.10 输出分析结果 353

9.10.1 输出模式(Output Mode)的使用场景 353

9.10.2 实例81:基于File Sink输出数据 354

9.10.3 实例82:基于Kafka Sink,以Streaming方式输出数据 356

9.10.4 实例83:基于Kafka Sink,以Batch方式输出数据 358

9.10.5 实例84:基于Console Sink输出数据 360

9.10.6 实例85:基于Memory Sink输出数据 360

9.10.7 实例86:基于Foreach Sink输出数据 362

9.10.8 实例87:基于ForeachBatch Sink输出数据 367

9.10.9 总结:不同Sink所适用的输出模式 369

9.11 Trigger触发器的分类 370

9.12 管理与监控工作流 370

9.12.1 管理工作流 370

9.12.2 监控工作流 372

9.13 Structured Streaming中的Checkpoint机制 372

9.14 连续处理模式——Continuous Processing 373

9.15 本章小结 374

第10章 Spark的相关优化 375

10.1 优化Spark程序 375

10.1.1 实例88:尽可能减少或避免出现Shuffle过程 375

10.1.2 实例89:使用Kryo作为序列化方案 377

10.1.3 尽可能批量操作数据 381

10.1.4 合理设置分区数 381

10.1.5 合理设置批处理间隔 381

10.2 优化数据 382

10.2.1 关于数据倾斜 382

10.2.2 实例90:使用自定义Partitioner缓解数据倾斜 383

10.2.3 关于数据补全 387

10.3 调优资源 388

10.4 本章小结 390

第5篇 商业项目实战 392

第11章 实战:学生学习情况分析系统 392

11.1 项目概述 392

11.1.1 业务背景 392

11.1.2 划分业务模块 392

11.2 开发环境说明 393

11.3 项目实现 394

11.3.1 构建工程 394

11.3.2 模拟数据 395

11.3.3 实时发送数据到Kafka 399

11.3.4 实时分析平台答题数据 402

11.3.5 构建推荐模型 405

11.3.6 实时推荐题目 411

11.3.7 离线分析学习情况 415

11.4 本章小结 422

相关图书
作者其它书籍
返回顶部