新書推薦:

《
霸权之后:世界政治经济中的合作与纷争(东方编译所译丛)
》
售價:HK$
383

《
亲子战争:全景解读2-6岁儿童行为与心理,风靡全美育儿专家克莱尔亲子教养课
》
售價:HK$
305

《
全球基础研究人才指数报告(2025)
》
售價:HK$
1520

《
投资的心法:从传统文化视角看清投资中的规律
》
售價:HK$
352

《
如何使孩子爱上阅读:家长和教师能做些什么(基于科学原理,培养孩子阅读水平与内在动机)
》
售價:HK$
255

《
博物馆学辞典 博物馆学核心工具书,权威专家联合编纂,理论与实践的指南!
》
售價:HK$
1255

《
战时的博弈:教宗庇护十二世、墨索里尼与希特勒的秘史(理想国译丛075)
》
售價:HK$
755

《
明亡清兴 1618—1662年的战争、外交与博弈
》
售價:HK$
347
|
| 編輯推薦: |
(1)清华大学黄永峰教授、江铭虎教授郑重推荐。 (2)《Spark大数据开发与应用案例:视频教学版》系统讲解Spark 3.5框架,全部内容都在培训机构长达8年的培训实践中,一遍一遍讲解过,一遍一遍实验过。 (3)《Spark大数据开发与应用案例:视频教学版》以通俗易懂的方式详解Spark原生态组件的基础与用法,每一章都结合大量的实战案例,讲解过程中注重知识的系统性和内容的实用性。 (4)《Spark大数据开发与应用案例:视频教学版》最后一章还给出Spark在大厂面试中经常问到的问题,精准覆盖工作中常见使用场景及互联网企业面试要点,可以作为面试指南。 (5)作者提供微信群答疑服务,读者在学习过程中碰到问题可以随时请教作者。 (6)配套示例源码、PPT课件、集群环境、教学视频、配图PDF文件、作者微信群答疑服务。
|
| 內容簡介: |
《Spark大数据开发与应用案例:视频教学版》在培训机构的教学实践中历经8年锤炼而成,以简明清晰且易于理解的方式,全面覆盖Spark集群构建、Spark Core、Spark SQL、Spark实战案例以及面试问答等内容。为增强读者的学习体验,《Spark大数据开发与应用案例:视频教学版》配套丰富的电子资源,包括示例源码、PPT教学课件、集群环境、教学视频以及作者微信群答疑服务。 《Spark大数据开发与应用案例:视频教学版》精心编排为15章,内容包括Spark简介、Spark集群环境部署、Spark编程体验、RDD深度解读、RDD的Shuffle详解、Spark共享变量、Spark序列化和线程安全、Spark内存管理机制、Spark SQL简介、Spark SQL抽象编程详解、Spark SQL自定义函数、Spark SQL源码解读、Spark性能调优、Spark实战案例、Spark面试题。 《Spark大数据开发与应用案例:视频教学版》不仅适合Spark初学者快速入门,也有助于大数据分析人员及大数据应用开发人员进一步提升技能。同时,《Spark大数据开发与应用案例:视频教学版》也可以作为高等院校或高职高专院校Spark大数据技术课程的教材。
|
| 關於作者: |
段海涛,毕业于南京邮电大学,高级工程师。曾就职于中国移动、中国石油、亚信科技等。从事大数据行业10余年,海易牛科技(大数据平台开发技术服务)和北京多易教育(大数据技术培训)创始人。为中国移动、用友软件、四方精创及多个城市的数据局等企业和单位提供过解决方案和技术咨询服务;为数千有志进入大数据开发行业的大学生提供了就业培训服务。在多个互联网平台公开Hadoop、Spark、Flink等大量培训视频,广受欢迎和好评。
杨忠良,毕业于清华大学电子工程系,博士,北京邮电大学副研究员、博士生导师。长期从事人工智能、大数据分析等领域的研究。在国内外重要期刊和会议发表学术论文80余篇,多篇文章收录ESI高被引论文。主持或参与多项国家自然科学基金、国家重点研发计划项目等,参与编撰教材1部。获得 2024年中国通信学会科学技术二等奖,2021 年 ACM SIGWEB CHINA 新星奖。
余辉,毕业于中科院,硕士,中级工程师,大数据平台架构师。曾就职于京东金融、酷开网络。从事大数据行业10余年,专注于大数据及机器学习领域。发表大数据相关论文3篇,发表软著10多个,授权专利30多个。著有《Hadoop+Spark生态系统与实战指南》。
|
| 目錄:
|
目 录
第1章 Spark简介 1 1.1 Spark概念及其特点 1 1.2 Spark技术生态系统 2 1.3 Spark运行模式 4 1.4 Spark执行流程 8 1.5 Spark专有名词 9 1.6 本章小结 11 第2章 Spark集群环境部署 12 2.1 VM虚拟机安装 13 2.2 Ubuntu 22.04系统安装 19 2.3 Ubuntu 22.04网络配置 24 2.4 Ubuntu 22.04环境配置 28 2.5 ZooKeeper安装 33 2.6 Hadoop安装 35 2.6.1 下载并解压 35 2.6.2 配置系统环境变量 35 2.6.3 配置核心文件 36 2.6.4 分发Hadoop 40 2.6.5 启动和验证 40 2.7 Spark安装 47 2.7.1 下载和解压 47 2.7.2 配置系统环境变量 47 2.7.3 配置核心文件 47 2.7.4 分发Spark 48 2.7.5 Spark启动及UI界面查看 48 2.7.6 spark-shell启动验证 49 2.8 集群和代码下载 50 2.9 本章小结 52 第3章 Spark编程体验 54 3.1 Scala基础编程 54 3.1.1 基本语法 55 3.1.2 函数和方法 57 3.1.3 控制语句 59 3.1.4 函数式编程 62 3.1.5 类和对象 67 3.1.6 Scala异常处理 70 3.1.7 Trait(特征) 72 3.1.8 Scala文件I/O 73 3.1.9 Scala练习题 74 3.2 Spark创建项目 80 3.3 Spark程序编写与运行方法 90 3.4 本章小结 92 第4章 RDD深度解读 93 4.1 RDD的概念及特点 93 4.1.1 RDD的特点 94 4.1.2 RDD的算子分类 95 4.1.3 RDD创建方法 95 4.2 RDD的血缘和依赖 97 4.2.1 血缘与依赖的概念 98 4.2.2 Dependency依赖关系 98 4.3 RDD的Transformation算子 103 4.4 RDD的Action算子 122 4.5 RDD的特殊算子 129 4.5.1 cache和persist 129 4.5.2 checkpoint 131 4.6 RDD转换算子的惰性 133 4.6.1 Scala迭代器Iterator接口 133 4.6.2 Scala迭代器Lazy特性及原理 134 4.7 模拟Spark自定义RDD 135 4.8 Spark任务执行原理图解分析 138 4.8.1 WordCount程序元素分解 138 4.8.2 WordCount程序图解 139 4.8.3 Stage和Task的类型 142 4.9 案例:多种算子实现WordCount 143 4.9.1 map + reduceByKey 144 4.9.2 countByValue 145 4.9.3 aggregateByKey或foldByKey 146 4.9.4 groupByKey+map 147 4.9.5 Scala原生实现wordCount 148 4.9.6 combineByKey 149 4.10 本章小结 150 第5章 RDD的Shuffle详解 151 5.1 Shuffle的概念及历史 151 5.1.1 Shuffle的概念 151 5.1.2 Shuffle演进的历史 152 5.2 Shuffle的验证及复用性 153 5.2.1 案例:reduceByKey一定会Shuffle吗 153 5.2.2 案例:join操作一定会触发Shuffle吗 155 5.2.3 Shuffle数据的复用实验 156 5.3 HashShuffleManager 160 5.3.1 HashShuffleManager优化前 160 5.3.2 HashShuffleManager优化后 161 5.4 SortShuffleManager 162 5.4.1 普通运行机制 163 5.4.2 Bypass运行机制 164 5.5 本章小结 164 第6章 Spark共享变量 166 6.1 广播变量 166 6.1.1 广播变量的使用场景 166 6.1.2 广播变量的实现原理 168 6.1.3 案例:两个集合进行结合 168 6.2 累加器 170 6.2.1 累加器使用场景 170 6.2.2 累加器实现原理 171 6.2.3 案例:自定义累加器 173 6.2.4 案例:不使用累加器的方案 174 6.2.5 案例:使用累加器的方法 175 6.3 本章小结 176 第7章 Spark序列化和线程安全 177 7.1 Spark序列化 177 7.1.1 序列化问题的场景 177 7.1.2 数据Bean未实现序列化接口 178 7.1.3 函数闭包及其示例 179 7.2 Task线程安全 191 7.2.1 线程不安全及其解决方案 191 7.2.2 避免线程不安全的示例 192 7.3 本章小结 195 第8章 Spark内存管理机制 196 8.1 内存管理概述 196 8.2 堆内内存和堆外内存的区别 197 8.3 堆内内存 198 8.4 堆外内存 201 8.5 本章小结 204 第9章 Spark SQL简介 205 9.1 Spark SQL的定义和特性 205 9.2 Spark SQL编程抽象 206 9.3 Spark SQL快速体验 207 9.3.1 程序使用示例 208 9.3.2 命令行使用示例 209 9.3.3 新的编程入口SparkSession 211 9.4 本章小结 212 第10章 Spark SQL抽象编程详解 213 10.1 DataFrame创建 213 10.1.1 使用RDD创建DataFrame 214 10.1.2 从结构化文件创建DataFrame 220 10.1.3 外部存储服务创建DataFrame 224 10.2 DataFrame运算 230 10.2.1 SQL风格操作 230 10.2.2 DSL风格API(TableApi)语法 230 10.3 DataFrame输出 236 10.3.1 输出控制台 236 10.3.2 输出文件 236 10.3.3 输出到RDBMS 237 10.3.4 输出到Hive 237 10.3.5 DataFrame输出时的分区操作 238 10.4 RDD代码和SQL代码混合编程 240 10.4.1 Dataset和DataFrame的区别及取数 241 10.4.2 由RDD创建DataFrame 246 10.4.3 由RDD创建Dataset 256 10.5 RDD、Dataset与DataFrame的互相转换 261 10.6 本章小结 262 第11章 Spark SQL自定义函数 263 11.1 用户自定义函数UDF 263 11.1.1 UDF函数的概念及其特点 263 11.1.2 UDF案例1:字符串处理 264 11.1.3 UDF案例2:GEOHASH算法 265 11.1.4 UDF案例3:余弦相似度算法 269 11.1.5 UDF注意事项 271 11.2 用户自定义聚合函数UDAF 272 11.2.1 UDAF的编程模板 272 11.2.2 UDAF原理讲解 273 11.2.3 弱类型用户自定义聚合函数 274 11.2.4 强类型用户自定义聚合函数 276 11.2.5 UDAF注意事项 279 11.3 本章小结 279 第12章 Spark SQL源码解读 280 12.1 Spark SQL的执行过程 280 12.2 元数据管理器SessionCatalog 281 12.3 SQL解析成逻辑执行计划 281 12.4 Analyzer绑定逻辑计划 284 12.5 Optimizer优化逻辑计划 286 12.5.1 谓词下推 290 12.5.2 列裁剪 290 12.5.3 常量替换 291 12.5.4 常量累加 292 12.6 使用SparkPlanner生成物理计划 293 12.7 从物理执行计划获取inputRdd执行 296 12.8 本章小结 296 第13章 Spark性能调优 297 13.1 Spark常规性能调优 297 13.1.1 常规性能调优一:最优资源配置 297 13.1.2 常规性能调优二:RDD优化 298 13.1.3 常规性能调优三:并行度调节 299 13.1.4 常规性能调优四:广播大变量 299 13.1.5 常规性能调优五:Kryo序列化 300 13.1.6 常规性能调优六:调节本地化等待时长 300 13.1.7 常规性能调优七:ShuGle调优 301 13.1.8 常规性能调优八:JVM调优 302 13.2 Spark开发原则优化 304 13.2.1 开发原则一:避免创建重复的RDD 304 13.2.2 开发原则二:避免创建重复的DataFrame 305 13.2.3 开发原则三:尽可能复用同一个RDD 305 13.2.4 开发原则四:避免重复性的SQL查询,对DataFrame复用 306 13.2.5 开发原则五:注意数据类型的使用 307 13.2.6 开发原则六:写出高质量的SQL 308 13.3 Spark调优方法 310 13.3.1 优化数据结构 310 13.3.2 使用缓存(Cache) 310 13.3.3 对配置属性进行调优 312 13.3.4 合理使用广播 314 13.3.5 尽量避免使用Shuffle算子 315 13.3.6 使用map-side预聚合的Shuffle操作 316 13.3.7 使用高性能算子 317 13.3.8 尽量在一次调用中处理一个分区的数据 318 13.3.9 对数据进行序列化 318 13.4 Spark数据倾斜调优 319 13.4.1 调整分区数目 319 13.4.2 去除多余的数据 320 13.4.3 使用广播将Reduce Join转换为Map Join 320 13.4.4 将key进行拆分,大数据转换为小数据 321 13.4.5 数据倾斜定位和解决 322 13.5 本章小结 327 第14章 Spark实战案例 328 14.1 Spark Core电影数据分析 328 14.1.1 表格及数据样例 329 14.1.2 连续登录超过3天的用户DSL风格 329 14.1.3 连续登录超过3天的用户SQL风格 330 14.1.4 电影统计DSL风格 332 14.1.5 电影统计SQL风格 333 14.1.6 电影统计运行结果 336 14.2 Spark Core日志数据分析 337 14.2.1 前期准备 338 14.2.2 统计PV和可视化 339 14.2.3 统计UV和可视化 342 14.2.4 统计TopN和可视化 346 14.3 Spark SQL电商数据分析 350 14.3.1 数据和表格说明 350 14.3.2 加载数据 351 14.3.3 计算每年的销售单数和销售总额 354 14.3.4 查询每年最大金额的订单及其金额 355 14.3.5 计算每年最畅销的货品 356 14.4 Spark SQL金融数据分析 358 14.4.1 数据准备 359 14.4.2 最大值和最小值 360 14.4.3 平均值 361 14.4.4 样本标准差和总体标准差 361 14.4.5 中位数 362 14.4.6 四分位数 364 14.5 本章小结 365 第15章 Spark面试题 366 15.1 Spark核心概念面试题 366 15.1.1 简述Spark是什么 366 15.1.2 简述Spark 3.0的特性 367 15.1.3 简述Spark生态系统有哪些组件 367 15.1.4 简述Spark的运行流程 368 15.1.5 简述Spark的主要功能与特性 368 15.1.6 简述Spark中RDD的Partitioner是如何决定的 369 15.1.7 简述SparkContext与SparkSession之间的区别是什么 369 15.1.8 简述Spark的几种运行模式 370 15.1.9 简述DAG为什么适合Spark 371 15.1.10 简述DAG如何划分Stage 371 15.2 Spark架构原理面试题 372 15.2.1 简述Spark SQL的执行原理 372 15.2.2 简述Spark SQL执行的流程 372 15.2.3 简述Spark相较于MapReduce的优势 373 15.2.4 简述RDD的宽依赖和窄依赖产生的原理 373 15.2.5 简述Stage的内部逻辑 374 15.2.6 简述为什么要根据宽依赖划分Stage 374 15.2.7 简述Spark on YARN运行过程 374 15.2.8 简述YARN Client与YARN Cluster的区别 375 15.2.9 简述Spark的YARN Cluster涉及的参数有哪些 376 15.2.10 简述Spark广播变量的实现和原理 376 15.3 Spark编程实践面试题 377 15.3.1 简述RDD是什么 377 15.3.2 简述对RDD机制的理解 377 15.3.3 简述RDD的宽依赖和窄依赖 378 15.3.4 简述RDD持久化原理是什么 378 15.3.5 简述RDD的容错机制 378 15.3.6 简述RDD的缓存级别 378 15.3.7 简述DAG中为什么要划分Stage 380 15.3.8 简述Spark SQL的数据倾斜解决方案 380 15.3.9 简述Spark SQL如何将数据写入Hive表 381 15.3.10 简述Spark SQL如何使用UDF 381 15.4 Spark性能调优面试题 382 15.4.1 简述Spark Checkpoint 382 15.4.2 简述Spark中Checkpoint和持久化机制的区别 383 15.4.3 简述Spark中的OOM问题 384 15.4.4 简述Spark程序执行时,如何修改默认Task执行个数 384 15.4.5 简述Spark Join操作的优化经验 385 15.4.6 简述Map Join的实现原理 386 15.4.7 简述Spark Shuffle在什么情况下会产生 387 15.4.8 简述Spark Shuffle会在哪些算子中出现 387 15.4.9 简述Spark中的Transform和Action 387 15.4.10 Spark的Job、Stage、Task如何划分 389 15.5 Spark实战应用面试题 389 15.5.1 简述Map和flatMap的区别 389 15.5.2 简述Map和mapPartition的区别 390 15.5.3 简述reduceByKey和groupByKey的区别 391 15.5.4 简述DataFrame的Cache和Persist的区别 391 15.5.5 简述reduceByKey和reduce的区别 392 15.5.6 简述Spark运行时并行度的设置 393 15.5.7 简述Spark解决了Hadoop的哪些问题 394 15.5.8 简述RDD、DataFrame、Dataset和DataStream的区别 395 15.5.9 简述Spark和MapReduce Shuffle的区别 395 15.5.10 简述RDD中reduceBykey与groupByKey哪个性能好 396 15.6 本章小结 396
|
| 內容試閱:
|
前 言 在21世纪的数字化时代,数据已成为国家基础性战略资源,被誉为新时代的“钻石矿”。党中央、国务院始终高度重视大数据在经济社会发展中的关键作用。自党的十八届五中全会提出“实施国家大数据战略”以来,国务院相继印发《促进大数据发展行动纲要》,标志着我国大数据发展进入全面推进的新阶段,旨在加快建设数据强国,推动经济社会高质量发展。 进入“十四五”规划时期,我国大数据产业发展迎来新的历史机遇。在国家政策的引导下,大数据与云计算、人工智能、区块链等新技术深度融合,不断催生新业态、新模式,为经济社会发展注入强大的动力。与此同时,大数据技术在政务、金融、教育、医疗、交通等领域的应用不断深化,有力推动了政府治理体系和治理能力的现代化,加速了产业数字化转型的步伐。 展望“十五五”规划,我国大数据产业将继续保持蓬勃发展态势,技术创新和应用实践将更加广泛深入。随着数据规模的持续增长和数据处理技术的不断进步,大数据将在推动经济社会发展中发挥更加重要的作用。因此,掌握大数据处理技能,特别是像Spark这样高效、易用的大数据处理框架,已成为大数据从业者必备的核心竞争力。 在此背景下,本书应运而生,专注于Apache Spark 3.5版本的快速上手和开发参考,所有内容都在培训机构历时8年的教学实践中锤炼而成。鉴于Spark Core和Spark SQL在大数据开发工作中的核心地位,本书将重点聚焦这两个组件,通过系统化的内容安排和深入浅出的讲解方式,帮助读者迅速掌握Spark的核心原理与实战技巧。 本书特点 (1)入门指南,全面剖析:本书作为Spark入门的权威指南,以深入浅出的笔触,全面剖析Spark原生组件的基础理论、实战技巧及集群部署策略。 (2)培训视角,直击核心:本书从培训教学的角度出发,精炼阐述Spark中核心组件的运作原理与实战应用,使读者能够迅速把握组件精髓,熟练运用各项功能。这不仅是一次知识的传递,更是一场实战技能的快速充电。 (3)实例辅助,强化理解:书中每个操作步骤均辅以详尽的实例代码或直观图表,确保理论知识与实践操作无缝对接。每章末尾设有精炼总结,不仅是对本章内容的回顾与提炼,更是为读者搭建起一座通往Spark全局视野的桥梁。 (4)实战案例,视频辅助:相较于市面上众多Spark图书,本书独树一帜地融合了实战案例分析与视频辅助教学的讲解方式,使读者在掌握Spark原理的基础上,通过实战演练进一步巩固知识。 (5)面试问答,助力应聘:特别增设Spark面试题章节,精准覆盖工作中常见的使用场景及互联网企业面试要点,助力读者在Spark领域游刃有余,无论是职场实践还是面试挑战都能从容应对。 (6)作者答疑,专业指导:作者创建答疑微信群,为学习本书的读者提供答疑服务,指导读者快速掌握Spark应用开发技术。 本书适合读者 本书适合Spark初学者、大数据分析人员、大数据应用开发人员。同时本书也适合高等院校或高职高专院校学习大数据技术课程的学生。 本书资料下载 本书配套示例代码、PPT课件、集群环境、教学视频、作者微信群答疑服务,读者需要使用自己的微信扫描下面的二维码获取。
本书写作分工 本书由多个作者合作完成,其中第1~5章由段海涛撰写,第6~10章由杨忠良撰写,第11~15章由余辉撰写。 由于作者的水平有限,书中难免会存在一些疏漏或者不够准确的地方,恳请读者批评指正。如果读者有疑问或者遇到任何问题,请联系下载资源中提供的微信,或者私信至微信公众号“辉哥大数据”,期待得到读者的真挚反馈。 谨以此书献给我最亲爱的家人、同事,以及众多热爱大数据的朋友们!
著 者 2025年8月
|
|