沃新书屋 - Spark大数据分析:源码解析与实例详解
本书资料更新时间:2025-05-02 20:59:26

Spark大数据分析:源码解析与实例详解

Spark大数据分析:源码解析与实例详解精美图片

Spark大数据分析:源码解析与实例详解书籍详细信息


内容简介:

《Spark大数据分析:源码解析与实例详解》基于Spark 2.3.x、Spark 2.4.x系列版本,采用“理论+实践”的形式编写。全书共有90个实例,1个完整项目。 第1篇“准备”,包括认识大数据和Spark、安装与配置Spark集群、第1个Spark程序;第2篇“入门”,包括读写分布式数据、处理分布式数据;第3篇“进阶”,包括RDD的高级操作、用SQL语法分析结构化数据、实时处理流式数据;第4篇“高阶”,包括实时处理流式数据、Spark的相关优化;第5篇“商业项目实战”,用Spark的各种组件实现一个学生学情分析商业项目。 《Spark大数据分析:源码解析与实例详解》结构清晰、实例丰富、通俗易懂、实用性强,特别适合Spark的初学者和进阶读者作为自学用书。另外,本书也适合社会培训学校作为培训教材,还适合大中专院校的相关专业作为教学参考书。

书籍目录:

==第1篇 准备 ∣ =第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篇 入门 ∣ 第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篇 进阶 ∣ 第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篇 高阶 = 第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模式下的inner join操作 /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篇 商业项目实战 = 第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

作者简介:

刘景泽 全栈工程师,长期从事大数据的研发工作,拥有丰富的大数据开发经验。 曾担任多家知名企的主力研发,并负责大数据云服务组件开发。 精通Java、Scala、Python等多种编程语言,擅长大数据生态圈的研发、算法、逆向工程等技术。 为多家企业提供技术支持,并长期面向企业一线开发人员分享实战经验。

其它内容:

暂无其它内容!


下载点评

  • 绝版(731+)
  • MOBI(460+)
  • 过度煽情(776+)
  • 水印(282+)
  • 无广告(451+)
  • 稳定(590+)
  • 流畅(522+)
  • 珍藏(360+)
  • 研究(831+)
  • 科研(138+)
  • 学生(258+)
  • 云同步(720+)
  • PDF(594+)
  • 可搜索(554+)
  • 自学(506+)
  • 雪中送炭(265+)
  • 盗版少(603+)
  • 经典(758+)
  • 原版(440+)
  • 扫描(364+)

下载评论

  • 用户1715559690: ( 2024-05-13 08:21:30 )

    稳定下载EPUB/AZW3文件,高清期刊推荐收藏,资源优质。

  • 用户1745622751: ( 2025-04-26 07:12:31 )

    秒传下载AZW3/TXT文件,完整小说推荐收藏,值得收藏。

  • 用户1734007307: ( 2024-12-12 20:41:47 )

    支持多种阅读器,兼容性好。

  • 用户1721755080: ( 2024-07-24 01:18:00 )

    双语版电子书下载极速,支持EPUB/MOBI格式导出,资源优质。

  • 用户1724046951: ( 2024-08-19 13:55:51 )

    无延迟下载PDF/EPUB文件,优质报告推荐收藏,体验良好。


相关书评

暂时还没有人为这本书评论!