我们一起学习Spark
本专栏系统讲解 Apache Spark 核心技术,涵盖 RDD、DataFrame、Spark SQL、Structured Streaming 及集群部署实战,结合 Scala 与 PySpark 双语言示例,从入门到进阶,助你掌握大数据处理与分析的核心能力。
酒城译痴无心剑
国家三级笔译。一手代码一手诗,酸甜苦辣寸心知。杏坛泊梦千秋事,万古云山日迟迟。讲授高等数学、Java高级程序设计、动态网站设计与开发(JSP、Servlet)、企业信息系统设计与开发(Spring Boot)、智能移动终端应用开发(Android)、Python Web开发(Django)、大数据离线分析(Hadoop、Hive、Spark)、计算机专业英语等课程,教学深入浅出,语言生动、经验丰富,深受学生好评。指导学生参加移动应用开发省赛和国赛,多次获奖,被授予优秀指导教师称号。热爱翻译,曾翻译西奥尼·帕帕斯数学科普读物《天天数学》与两千余首诗词,已形成独特的译诗风格。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
6.2 了解Spark MLlib算法库
Apache Spark MLlib 是基于 Spark 分布式框架的机器学习库,提供 `spark.mllib` 和 `spark.ml` API。它支持监督、无监督学习及推荐系统算法,具备数据预处理、特征工程、模型训练评估和 Pipeline 构建能力。利用 Spark 内存计算和分布式优势,能高效处理海量数据,加速模型训练,并提供生产部署与调优方案。原创 2026-06-01 10:13:37 · 346 阅读 · 0 评论 -
6.1 机器学习概述
机器学习是一门让计算机从经验中学习并提升性能的技术,包含监督、无监督、半监督和强化学习四种方式,涵盖分类、回归、聚类、降维等功能。其核心流程包括数据采集预处理、数据集分割、模型选择训练、评估优化和实际应用。在商业、金融、医疗、自然语言处理、计算机视觉等领域广泛应用。关键术语包括数据集、样本、特征、模型等。通过算法分析数据模式,机器学习系统能够自动改进性能,实现预测、识别、决策等智能化功能,已成为推动人工智能发展的重要技术基础。原创 2026-05-28 18:10:57 · 260 阅读 · 0 评论 -
5.4 图书热度实时排行榜实战
该项目实现Spark Streaming实时图书热度排行。通过CreateData模拟器每60秒从BookRating.txt抽取100条记录到D:/StreamingData/目录。BookRating程序使用2分钟滑动窗口(每分钟滑动)累加图书评分,计算Top 10并保存至HDFS的CSV文件。原创 2026-05-28 17:47:08 · 282 阅读 · 0 评论 -
5.3 掌握DStream基础操作
本次实战基于 Spark Streaming 演示了 DStream 核心操作。通过 transform 灵活拆分数据,利用滑动窗口实现实时词频统计。最终将结果按批次写入 HDFS,并通过 JDBC 将 Top3 热词持久化至 MySQL,验证了流式计算中微批次处理、窗口聚合及数据落地能力。原创 2026-05-27 19:43:57 · 275 阅读 · 0 评论 -
5.2 初识Spark Streaming
本次实战基于Spark Streaming微批处理架构,实现了两种实时词频统计。首先通过`socketTextStream`监听TCP端口,配合NetCat工具完成网络数据流的实时聚合;其次利用`textFileStream`监控HDFS目录,验证了对文件系统新增文件的自动感知与准实时处理能力。实战完整演示了DStream的创建、转换算子应用及结果输出全流程,帮助深入理解流式计算原理。原创 2026-05-23 14:05:34 · 307 阅读 · 0 评论 -
5.1 初探大数据流式处理
流式处理针对无界数据实时计算,具备低延迟、高时效及无序性等特征,广泛应用于风控与推荐场景。其核心技术包括DAG任务调度、内存计算及高可用机制。主流框架中,Storm延迟极低但状态管理弱;Spark Streaming采用微批处理,吞吐高且生态完善;Flink兼顾原生流处理与精确一次语义,是当前复杂实时计算的首选方案。原创 2026-05-23 09:16:53 · 120 阅读 · 0 评论 -
4.8.5 利用Spark SQL统计网站每月访问量
本实战使用Spark SQL分析HDFS上的网站访问日志,通过读取CSV文件、提取日期字段、按年月分组聚合访问量、降序排列等步骤,实现月度访问量统计功能。涵盖Spark DataFrame操作、SQL查询优化和HDFS文件处理等关键技术,适用于大数据场景下的流量分析和业务决策支持。原创 2026-05-22 18:43:43 · 164 阅读 · 0 评论 -
4.8.4 利用Spark SQL实现分组排行榜
利用Spark SQL读取学生成绩数据,通过窗口函数ROW_NUMBER()按姓名分组、成绩降序排序并生成行号。使用CASE WHEN条件聚合将前3名成绩分别提取至grade1、grade2、grade3字段,实现分组内Top3成绩展示。该方法高效处理大规模数据,结果结构清晰。原创 2026-05-22 17:09:34 · 193 阅读 · 0 评论 -
4.8.3 利用SparkSQL统计每日新增用户
利用Spark SQL分析用户访问日志,通过倒排索引思想按用户名分组取最小日期(首次访问),再按日期分组计数,统计每日新增用户。实战涵盖HDFS操作、DataFrame转换、SQL查询优化等关键技术,输出格式化表格展示用户增长趋势。原创 2026-05-22 13:58:32 · 171 阅读 · 0 评论 -
4.8.2 利用Spark SQL计算总分与平均分
本次实战使用Spark SQL处理HDFS上的学生成绩数据。通过`split`函数解析文本,创建多列数据帧并注册临时视图,执行SQL查询计算总分和平均分(保留一位小数),最终以中文别名输出结果。涵盖了数据读取、转换、聚合和展示的关键流程。原创 2026-05-22 11:55:34 · 289 阅读 · 0 评论 -
4.7 Spark SQL函数分类与应用
本次实战涵盖三方面:内置函数(字符串、日期、聚合等)通过API或SQL调用;自定义函数(UDF/UDAF)扩展处理能力,如手机号脱敏或复杂聚合;开窗函数(如row_number)实现分组内排序排名,轻松获取各组Top N记录,满足高级分析需求。原创 2026-05-22 10:27:21 · 193 阅读 · 0 评论 -
4.8.1 利用Spark SQL实现词频统计
本实战演示使用 Spark SQL 实现词频统计,涵盖交互式操作和项目开发。通过 DataFrame API 和 SQL 查询处理文本数据,重点讲解 ORDER BY 排序、Action 操作触发机制,并包含 HDFS 文件操作、Maven 依赖配置等完整流程。原创 2026-05-21 23:32:32 · 202 阅读 · 0 评论 -
3.8.5 利用RDD统计网站每月访问量
本实验使用 Spark RDD 分析网站访问日志,统计每月访问量。通过 `textFile()` 读取 CSV 数据,`map()` 和 `split()` 提取时间字段并格式化为 `yyyy-M` 键值对,`reduceByKey()` 累计月访问量,`sortBy()` 降序排列。涵盖数据清洗、转换和聚合完整流程,结果保存至 HDFS,适用于流量分析等场景。原创 2026-05-21 08:59:17 · 108 阅读 · 0 评论 -
3.8.4 利用RDD实现分组排行榜
本次实战使用 Spark RDD 实现分组 Top N:读取学生成绩文件,按姓名分组,计算每人最高分前三,并格式化输出。涵盖 textFile、map、groupByKey、sortWith 等核心 API,展示分布式数据处理流程,提供交互式和项目两种实现方式。原创 2026-05-20 22:59:40 · 391 阅读 · 0 评论 -
3.8.3 利用RDD统计每日新增用户
本实战使用Spark RDD处理用户访问日志。通过读取数据、构建(用户, 日期)键值对、按键分组,再取每组日期最小值作为新增日期,最后按日期计数,实现每日新增用户数的精确统计,展示了RDD在大数据去重和聚合场景的应用。原创 2026-05-20 17:21:57 · 177 阅读 · 0 评论 -
3.8.2 利用RDD计算总分与平均分
本次实战利用Spark RDD实现学生成绩的总分与平均分统计。通过`flatMap`拆解成绩、`reduceByKey`聚合总分及`map`计算均值,完成了从HDFS读取数据到格式化输出的全流程。实验涵盖交互式与项目式开发,验证了RDD在结构化数据统计中的并行处理能力,夯实了大数据批处理基础。原创 2026-05-20 11:49:39 · 583 阅读 · 0 评论 -
3.8.1 利用RDD实现词频统计
本次实战利用Spark RDD实现词频统计。通过`flatMap`拆分单词、`map`构建键值对及`reduceByKey`聚合计数,完成了从HDFS读取文本到降序输出的全流程。实验涵盖交互式与项目式开发,验证了RDD分布式计算能力,奠定了大数据批处理基础。原创 2026-05-20 10:50:56 · 381 阅读 · 0 评论 -
4.6 Spark SQL数据源 - JDBC
文档介绍Spark SQL通过JDBC连接MySQL的实战流程,涵盖理论基础、环境搭建、数据表创建、两种读取方式(dbtable需别名,query无需别名)、性能优化参数及数据写入等完整流程,为Spark与关系型数据库集成提供端到端参考。原创 2026-05-19 22:43:09 · 277 阅读 · 0 评论 -
4.5 Spark SQL数据源 - Hive表
Spark SQL 集成 Hive 实战:配置 hive-site.xml 启用 Hive 支持,创建 student 表并导入本地数据。演示查询、分组统计、Parquet 格式存储及数据帧写入新表等操作,最终在 Hive 客户端验证表结构与数据,实现 Spark 与 Hive 无缝集成。原创 2026-05-18 18:13:27 · 430 阅读 · 0 评论 -
4.4 Spark SQL数据源 - JSON
Spark SQL JSON实战:自动推断Schema读取HDFS JSON文件,创建DataFrame进行关联查询。对比传统`read.json(RDD)`(已弃用)与现代`from_json()`+Schema方式,后者性能更优、类型安全,实现JSON字符串高效解析为结构化数据。原创 2026-05-18 11:30:50 · 324 阅读 · 0 评论 -
4.3 Spark SQL数据源 - Parquet文件
本次实战讲解Spark SQL中Parquet文件处理与Schema合并技术。通过`read/write.parquet()`完成基本操作,使用SaveMode解决目录冲突。通过`option("mergeSchema", true)`或`spark.sql.parquet.mergeSchema`启用Schema合并,自动整合不同结构的Parquet文件,配合groupBy聚合实现异构数据源整合。原创 2026-05-18 09:47:38 · 359 阅读 · 0 评论 -
4.2.4 Spark SQL数据源 - 掌握分区自动推断
分区自动推断是Spark SQL的重要特性,能自动识别"分区列=值"目录结构并转化为数据帧分区字段。实战需按规范创建嵌套目录,将数据文件存入对应分区。通过`spark.read.format("json").load()`读取根目录即可自动推断分区列,支持多种数据类型自动识别,也可通过配置参数控制。原创 2026-05-17 18:03:50 · 302 阅读 · 0 评论 -
4.2.3 Spark SQL数据源 - 掌握数据写入模式
本次实战重点讲解Spark SQL中mode()方法的数据写入策略控制。通过SaveMode枚举类可实现四种写入模式:ErrorIfExists(默认,存在则报错)、Append(追加数据)、Overwrite(完全覆盖)和Ignore(存在则忽略)。实战演示中,首先读取HDFS上的JSON数据生成DataFrame,然后通过不同模式写入同一输出目录验证效果:覆写模式会替换原有数据,追加模式增加新文件,忽略模式保持原状,错误模式则阻止重复写入。原创 2026-05-17 17:35:55 · 208 阅读 · 0 评论 -
4.2.2 Spark SQL数据源 - 手动指定数据源格式
本实战介绍Spark SQL数据源操作,涵盖format()和option()方法使用。通过三个案例:CSV文件读取(处理表头、分隔符、类型转换)、JSON数据读取与多格式保存、JDBC数据库连接与数据转换,全面展示数据源处理流程。原创 2026-05-16 22:04:15 · 296 阅读 · 0 评论 -
4.2.1 Spark SQL数据源 - 初探默认数据源格式
本节实战演示 Spark SQL 默认使用 Parquet 格式。通过 `spark.read.load()` 和 `df.write.save()`(未指定 format)操作 HDFS 上的 Parquet 文件,展示了读取、查询、保存流程。课堂练习将文本文件转为 Parquet,并在 IDEA 中完成完整项目开发,验证了默认数据源格式的应用。原创 2026-05-16 19:47:33 · 393 阅读 · 0 评论 -
4.1 Spark SQL数据帧与数据集
本次实战涵盖数据帧(DataFrame)与数据集(Dataset)操作。通过 SparkSession 统一入口加载 HDFS 文本文件,定义 Student 样例类实现结构化转换。支持投影(select)、过滤(filter)、聚合(groupBy)、排序(sort)等核心操作:可按字段筛选、条件查询、分组统计(计数/求和/平均值/最值)及多级排序。提供 SQL 风格 API,允许列别名、表达式计算,通过 createTempView() 注册临时视图后执行标准 SQL 语句,实现灵活的数据分析与查询……原创 2026-05-15 14:43:06 · 304 阅读 · 0 评论 -
3.7 Spark任务调度
Spark任务调度的核心逻辑,在于利用有向无环图(DAG)来优化并行计算。整个流程始于用户代码构建的RDD依赖图,DAGScheduler会依据宽依赖(Shuffle)将图切分为多个Stage,窄依赖则被合并以实现流水线计算。随后,TaskScheduler将这些Stage转化为具体的任务集,并分发给Worker节点的Executor执行。这种“逻辑划分”与“物理执行”解耦的机制,通过隔离昂贵的Shuffle操作,极大地提升了分布式计算的效率与容错能力。原创 2026-05-08 11:10:32 · 152 阅读 · 0 评论 -
3.6 RDD容错机制
本次实战深入探讨了Spark的RDD容错机制与共享变量应用。容错方面,介绍了基于血统的默认恢复方式及其在长依赖链下的性能瓶颈,并重点演示了通过检查点机制将数据写入HDFS以切断血统、提升恢复效率的方法。共享变量部分,通过对比实验展示了广播变量如何将大只读数据高效分发至各节点,显著降低网络开销;同时利用累加器解决了分布式环境中普通变量无法跨节点聚合的问题,实现了Executor端数据向Driver端的安全累加。原创 2026-05-08 10:22:14 · 442 阅读 · 0 评论 -
3.5 RDD持久化机制
本次实战通过完整的代码示例和Web UI监控,深入讲解了Spark RDD持久化机制。首先通过WordCount案例对比了未持久化(重复计算)与持久化(缓存复用)的性能差异,验证了持久化能显著提升重复计算效率。接着详细介绍了MEMORY_ONLY、DISK_ONLY、MEMORY_AND_DISK等多种存储级别及其适用场景,强调根据内存容量和性能需求合理选择。原创 2026-05-07 14:18:01 · 292 阅读 · 0 评论 -
3.4 理解RDD依赖
本次实战通过代码验证了 RDD 的窄依赖与宽依赖特性。窄依赖以 map 算子为例,Spark UI 显示仅有一个 Stage,无 Shuffle 读写,且操作前后分区数(2)和元素数(5)保持不变,体现了一对一的高效流水线计算。宽依赖以 reduceByKey 为例,UI 显示作业被切分为两个 Stage,存在 Shuffle 读写数据,验证了“一对多”的重分布过程;操作后分区数虽保持为 2,但元素数由 5 减至 3,体现了聚合功能。原创 2026-05-07 10:04:33 · 285 阅读 · 0 评论 -
3.3 掌握RDD分区
本次实战通过学生成绩数据的自定义分区处理,深入讲解Spark RDD分区机制。创建自定义SubjectPartitioner分区器,将语文、数学、英语三科成绩按科目分配到不同分区,实现数据的精准分布控制。实战涵盖从环境搭建、依赖配置、分区器实现到数据处理的完整流程,并通过调整分区数(2、3、4)演示分区器与数据映射关系的重要性。当分区数与实际业务逻辑不匹配时(如分区数2但需处理3个科目),会引发ArrayIndexOutOfBoundsException异常,体现了分区设计需与业务逻辑保持一致的关键原则……原创 2026-05-06 20:08:57 · 196 阅读 · 0 评论 -
3.2 掌握RDD算子
Spark RDD算子实战涵盖转换与行动两大操作类型。转换算子如map、filter、flatMap、reduceByKey等实现数据变换,union、join、intersection等处理数据关联,均具惰性特性。行动算子如collect、count、reduce、foreach触发实际计算并将结果返回驱动程序或输出到外部系统。掌握这些算子的语义与用法,能高效处理分布式数据集,实现从基础映射过滤到复杂聚合连接的各类数据处理任务。原创 2026-05-06 10:42:13 · 178 阅读 · 0 评论 -
3.1 掌握RDD的创建
在实战环节,内容涵盖从环境准备到代码落地的全过程:包括HDFS与Spark集群的启动配置,以及如何利用parallelize或makeRDD算子将内存集合(Array/List)转化为分布式数据。同时,深入讲解通过textFile算子读取本地文件或HDFS文件创建RDD的技术细节,重点剖析了本地模式与集群模式下文件路径前缀(如file://、hdfs://)的差异与规范,为后续进行复杂的数据转换与行动算子操作奠定坚实基础。原创 2026-05-03 20:36:50 · 79 阅读 · 0 评论 -
2.4.3 集群模式运行Spark项目
本实战演示了Spark集群运行WordCount项目的完整流程。首先配置scala-maven-plugin插件解决Scala代码编译问题,利用Maven package指令生成项目JAR包并上传至集群。随后,分别采用client和cluster模式提交任务,通过配置Driver和Executor资源,将任务部署在集群内部运行。通过不同参数组合测试,验证程序对输入输出路径的处理逻辑。最终,通过Spark Web UI和HDFS结果文件,确认任务执行状态与词频统计结果,完整呈现了Spark集群应用的部署与监控原创 2026-05-01 18:00:36 · 313 阅读 · 0 评论 -
2.4.2 本地模式运行Spark项目
本次实战演示如何在本地模式下运行Spark项目进行词频统计。首先创建Maven项目并配置Spark 3.1.3依赖和Scala SDK,设置JDK 8环境。接着创建必要的配置文件如log4j.properties和hdfs-site.xml。在net.huawei.rdd包下创建WordCount对象,实现Spark RDD词频统计功能:读取HDFS文件,通过flatMap分割单词,map映射为键值对,reduceByKey聚合计数,最后按词频降序排列。原创 2026-04-28 20:47:45 · 201 阅读 · 0 评论 -
2.4.1 词频统计准备工作
词频统计可通过MapReduce、Hive SQL、Spark RDD和Spark SQL等多种方式实现。在Spark开发中,版本选择至关重要,需注意Spark内核与Scala版本的兼容性,如Spark 3.1.3配合Scala 2.12和JDK 8可确保本地运行和集群部署的一致性。实战准备包括启动HDFS和Spark集群服务,以及准备测试数据文件(words.txt)并上传至HDFS分布式存储中,为后续的词频统计分析奠定基础。原创 2026-04-28 20:42:54 · 109 阅读 · 0 评论 -
2.2.3.2 Spark集群上实操
本次Spark集群实战涵盖完整操作流程:首先启动HDFS与Spark集群(通过start-all.sh),验证各节点进程正常;接着访问WebUI(端口8080/8081)监控集群状态。使用spark-shell交互式环境执行词频统计(WordCount)任务,通过RDD API处理HDFS数据并查看作业执行情况。随后利用spark-submit工具分别以client和cluster模式提交SparkPi示例程序,对比不同部署模式差异,通过WebUI跟踪应用生命周期。原创 2026-04-22 10:11:50 · 419 阅读 · 0 评论 -
2.2.2.2 使用Spark单机版环境
本次实战深入探索Spark单机版环境的核心功能。首先运行SparkPi示例程序计算圆周率,验证集群计算能力;随后启动spark-shell进入交互式环境,完成等差数列求和、九九乘法表打印等基础任务。重点通过Scala代码操作RDD,演示了从文本文件和集合创建RDD的方法,实践了filter转化操作筛选数据,以及first、collect、foreach、saveAsTextFile等行动操作获取和保存结果,全面展示了Spark的数据处理流程和RDD编程模型。原创 2026-04-01 09:50:11 · 250 阅读 · 0 评论 -
2.1 初识Spark
本节内容系统介绍了Apache Spark的核心架构与发展历程。Spark作为统一的大数据处理引擎,基于内存计算模型,具备极高的处理速度与扩展性。其核心组件包括用于结构化数据处理的Spark SQL、实时流计算的Spark Streaming、机器学习库MLlib及图计算框架GraphX,实现了多场景下的统一计算。Spark打破了Hadoop的基准纪录,支持Scala、Python等多种语言,广泛应用于交互式分析、机器学习及实时数据处理等场景,是大数据计算领域的主流技术。原创 2026-04-01 10:06:56 · 148 阅读 · 0 评论 -
2.2.2.1 搭建Spark单机版环境
本次实战旨在Linux环境下完成Spark单机版环境的搭建。首先确保JDK已正确安装,随后获取Spark安装包并上传至服务器指定目录。接着,将安装包解压至系统路径,并通过修改配置文件设置环境变量,使系统能够识别Spark命令。最后,通过验证命令检查安装版本,确认环境配置无误,为后续进行Spark大数据处理应用的开发与运行奠定坚实基础。原创 2026-04-01 09:47:05 · 139 阅读 · 0 评论
分享