本书作为Spark的入门书,从Spark核心编程语言Scala讲起,涵盖当前Spark主流的开发组件。以实操为主,深入讲解每一个操作步骤,包括Spark RDD离线数据处理、Spark SQL快速结构化数据处理、Spark Streaming实时数据处理,同时包括案例讲解、源码剖析、常用Shell命令和Java API详解。即使没有任何Spark基础的读者也可以对照书中的步骤成功搭建属于自己的Spark集群,是一本真正的实操指南书籍。本书可作为大数据开发人员的随身手册,也可作为Spark新手入门的指导书籍,以及大数据从业者的参考用书。
"Spark已成为当今很好活跃、高效的大数据计算平台,很多互联网公司都使用Spark来实现公司的核心业务,如阿里的云计算平台、京东的推荐系统等,只要和海量数据相关的领域都有Spark的身影。 本书基于Spark 2.4.x新版本编写,涵盖当前整个Spark生态系统主流的大数据处理技术,以实操案例为主,理论为辅,一步一步手把手对常用的Spark离线计算及实时计算等系统进行详细论述。"
章Spark开发准备——Scala基础1
1.1什么是SCALA1
1.2安装SCALA2
1.2.1在Windows中安装Scala2
1.2.2在CentOS7中安装Scala3
1.3SCALA基础4
1.3.1变量声明4
1.3.2数据类型5
1.3.3表达式7
1.3.4循环8
1.3.5方法与函数10
1.4集合14
1.4.1数组14
1.4.2List16
1.4.3Map映射17
1.4.4元组19
1.4.5Set20
1.5类和对象21
1.5.1类的定义21
1.5.2单例对象22
1.5.3伴生对象22
1.5.4get和set方法23
1.5.5构造器25
1.6抽象类和特质28
1.6.1抽象类28
1.6.2特质30
1.7使用ECLIPSE创建SCALA项目31
1.7.1安装ScalaforEclipseIDE31
1.7.2创建Scala项目33
1.8使用INTELLIJIDEA创建SCALA项目33
1.8.1在IDEA中安装Scala插件34
1.8.2创建Scala项目37
第2章初识Spark40
2.1大数据开发总体架构40
2.2什么是SPARK42
2.3SPARK主要组件43
2.4SPARK运行时架构45
2.4.1YARN集群架构45
2.4.2SparkStandalone架构49
2.4.3SparkOnYARN架构50
2.5SPARK集群搭建与测试53
2.5.1SparkStandalone模式的集群搭建53
2.5.2SparkOnYARN模式的集群搭建55
2.5.3SparkHA的搭建56
2.6SPARK应用程序的提交60
2.7SPARKSHELL的使用63
第3章SparkRDD弹性分布式数据集66
3.1什么是RDD66
3.2创建RDD67
3.2.1从对象集合创建RDD67
3.2.2从外部存储创建RDD68
3.3RDD的算子69
3.3.1转化算子69
3.3.2行动算子77
3.4RDD的分区78
3.4.1分区数量79
3.4.2自定义分区器88
3.5RDD的依赖93
3.5.1窄依赖94
3.5.2宽依赖94
3.5.3Stage划分95
3.6RDD的持久化97
3.6.1存储级别98
3.6.2查看缓存100
3.7RDD的检查点102
3.8共享变量104
3.8.1广播变量104
3.8.2累加器106
3.9案例分析:SPARKRDD实现单词计数107
3.10案例分析:SPARKRDD实现分组求TOPN116
3.11案例分析:SPARKRDD实现二次排序120
3.12案例分析:SPARKRDD计算成绩平均分124
3.13案例分析:SPARKRDD倒排索引统计每日新增用户126
3.14案例分析:SPARKRDD读写HBASE130
3.14.1读取HBase表数据131
3.14.2写入HBase表数据134
3.15案例分析:SPARKRDD数据倾斜问题解决143
3.15.1数据倾斜的常用解决方法144
3.15.2使用随机key进行双重聚合145
3.15.3WebUI查看Spark历史作业149
第4章Spark内核源码分析151
4.1SPARK集群启动原理分析151
4.2SPARK应用程序提交原理分析162
4.3SPARK作业工作原理分析175
4.3.1MapReduce的工作原理175
4.3.2Spark作业工作的原理177
4.4SPARK检查点原理分析191
第5章SparkSQL结构化数据处理引擎196
5.1什么是SPARKSQL196
5.2DATAFRAME和DATASET197
5.3SPARKSQL的基本使用198
5.4SPARKSQL数据源201
5.4.1基本操作201
5.4.2Parquet文件206
5.4.3JSON数据集209
5.4.4Hive表211
5.4.5JDBC213
5.5SPARKSQL内置函数214
5.5.1自定义函数216
5.5.2自定义聚合函数218
5.5.3开窗函数220
5.6案例分析:使用SPARKSQL实现单词计数223
5.7案例分析:SPARKSQL与HIVE整合228
5.7.1整合Hive的步骤228
5.7.2操作Hive的几种方式231
5.8案例分析:SPARKSQL读写MYSQL233
5.9案例分析:SPARKSQL每日UV统计238
5.10案例分析:SPARKSQL热点搜索词统计241
5.11综合案例:SPARKSQL智慧交通数据分析244
5.11.1项目介绍244
5.11.2数据准备246
5.11.3统计正常卡口数量249
5.11.4统计车流量排名前3的卡口号249
5.11.5统计车辆高速通过的卡口TOP5250
5.11.6统计每个卡口通过速度快的前3辆车254
5.11.7车辆轨迹分析255
第6章Kafka分布式消息系统256
6.1什么是KAFKA256
6.2KAFKA架构257
6.3主题与分区259
6.4分区副本260
6.5消费者组262
6.6数据存储机制2
6.7集群环境搭建266
6.8命令行操作268
6.8.1创建主题268
6.8.2查询主题269
6.8.3创建生产者269
6.8.4创建消费者270
6.9JAVAAPI操作271
6.9.1创建Java工程271
6.9.2创建生产者271
6.9.3创建消费者273
6.9.4运行程序275
6.10案例分析:KAFKA生产者277
第7章SparkStreaming实时流处理引擎285
7.1什么是SPARKSTREAMING285
7.2SPARKSTREAMING工作原理286
7.3输入DSTREAM和RECEIVER287
7.4个SPARKSTREAMING程序288
7.5SPARKSTREAMING数据源290
7.5.1基本数据源290
7.5.2不错数据源292
7.5.3自定义数据源293
7.6DSTREAM操作297
7.6.1无状态操作297
7.6.2状态操作299
7.6.3窗口操作300
7.6.4输出操作302
7.6.5缓存及持久化303
7.6.6检查点304
7.7案例分析:SPARKSTREAMING按批次累加单词数量306
7.8案例分析:SPARKSTREAMING整合KAFKA计算实时单词数量311
7.9案例分析:SPARKSTREAMING实时用户日志黑名单过滤318
7.10综合案例:微博用户行为分析322
第8章StructuredStreaming结构化流处理引擎325
8.1什么是STRUCTUREDSTREAMING325
8.2STRUCTUREDSTREAMING单词计数326
8.3STRUCTUREDSTREAMING编程模型328
8.4STRUCTUREDSTREAMING查询输出330
8.5STRUCTUREDSTREAMING窗口操作334
8.5.1事件时间334
8.5.2窗口聚合单词计数335
8.5.3延迟数据和水印339
8.6案例分析:STRUCTUREDSTREAMING整合KAFKA实现单词计数343
第9章GraphX图计算引擎347
9.1什么是GRAPHX347
9.2个GRAPHX程序348
9.3GRAPHX数据结构352
9.4GRAPHX图操作352
9.4.1基本操作352
9.4.2属性操作355
9.4.3结构操作357
9.4.4连接操作359
9.4.5聚合操作362
9.5案例分析:使用GRAPHX计算社交网络中粉丝的平均年龄363