
Spark
文章平均质量分 95
武子康
Hi, I'm Zikang / 武子康
好奇心驱动的探索者 | INTJ / INFJ
我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。
坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大数据-21 Sqoop 数据迁移 ETL工具 MySQL与Hive数据互相迁移 导入导出
Apache Sqoop 是一款开源工具,主要用于在关系型数据库(如 MySQL、Oracle)与 Hadoop(HDFS、Hive、HBase)之间高效传输数据。Sqoop 可将数据库中的数据导入至 Hadoop,也支持将分析结果导出回数据库。其本质是自动生成 MapReduce 程序实现并行数据处理,支持批量传输、数据仓库同步等功能。随着技术发展,推荐使用更现代的替代方案,如 Apache NiFi、Flink CDC、Spark JDBC 等,用于实时或增量数据同步。原创 2024-07-10 09:21:16 · 629 阅读 · 0 评论 -
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解
GBDT 案例实战,手把手带你完成从残差计算到回归树构建与迭代训练的全过程,结合图示详细解析,最终预测精准输出!👉 点个关注,不迷路!后续还将持续更新更多大模型+数据智能+工程实战内容,敬请期待!GBDT 是一种集成学习方法,全称为 梯度提升决策树(Gradient Boosting Decision Tree),属于 Boosting 家族的模型。它通过多个弱学习器(通常是决策树)逐步叠加,不断优化前一次模型的预测误差,从而形成一个强学习器,常用于分类、回归等任务。原创 2025-06-04 09:20:46 · 1917 阅读 · 0 评论 -
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
本文介绍了梯度提升树(GBDT)算法的原理与应用。首先通过通俗例子说明提升树的基本思想,然后详细解析算法流程,包括负梯度计算、回归树拟合和模型更新等关键步骤。文章比较了GBDT与传统提升树的区别,并阐述了GBDT在回归和分类问题中的优势。此外,还介绍了XGBoost、LightGBM等高效实现及其特性,分析了GBDT的适用场景和局限性。最后提供了使用XGBoost分类器的代码示例。全文深入浅出地讲解了这一重要的机器学习算法。原创 2025-06-03 09:13:03 · 1122 阅读 · 0 评论 -
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
本文介绍了机器学习中Bagging与Boosting的区别,以及GBDT(梯度提升决策树)算法原理。主要内容包括:1)Bagging和Boosting在数据采样、投票方式、学习顺序和应用场景上的差异;2)GBDT的基本概念和使用CART回归树的原因;3)回归决策树的构建流程,包括最优切分点选择、区域划分和输出值计算;4)通过具体案例演示回归树的生成过程,包括损失函数计算和递归划分策略。文章对理解集成学习和决策树算法具有实用参考价值。原创 2025-06-03 09:04:26 · 938 阅读 · 0 评论 -
大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting
本文系统介绍了机器学习中的集成学习方法。主要内容包括:1)集成学习的基本定义与分类,通过结合多个模型提升预测性能;2)Bagging方法原理及应用,重点讲解随机森林的实现过程;3)Boosting方法的核心思想,包括Adaboost等算法的逐步增强机制。文章通过图示直观展示了不同集成学习技术的运作流程,比较了它们在解决欠拟合和过拟合问题上的作用。整体而言,集成学习方法能够显著提升模型性能,是机器学习领域的重要技术。原创 2025-06-02 11:07:21 · 568 阅读 · 0 评论 -
大数据-270 Spark MLib - 基础介绍 机器学习算法介绍 WordCount 代码编写 三个测试案例
SparkMLib 是Spark的机器学习库(Machine Learning),封装了一些通用机器学习算法和工具,便于我们开展机器学习实践。常用算法:包括类、回归、聚类和协同过滤特征化工具:包括特征提取、转换、降维和选择工具管道:用于构建、评估和调整机器学习管道的工具持久化工具:保存和加载算法、模型、管道其他工具:线性代数、统计、数据处理等。原创 2025-03-10 14:18:43 · 7265 阅读 · 0 评论 -
大数据-106 Spark Graph X案例:1图计算、2连通图算法、3寻找相同用户 高效分区、负载均衡与迭代优化
合理选择分区策略可显著降低网络通信开销、避免数据倾斜,并提升迭代计算效率。GraphX 提供了多种分区方式:边分区(默认,简单但可能产生倾斜)、顶点分区(适合顶点度不均匀的图)、以及 2D 分区(能有效减少通信量)。在实际应用中,可以通过 graph.partitionBy() 显式指定策略,并结合运行时监控来发现和优化分区效果。对于社交网络类图,推荐使用 EdgePartition2D;在二分图中,可考虑 RandomVertexCut。若遇到数据倾斜,可利用 repartition() 或自定义分区器解原创 2024-08-28 09:52:55 · 5181 阅读 · 3 评论 -
大数据-105 Spark GraphX 入门详解:分布式图计算框架全面解析 架构、算法与应用场景
属性图为核心,支持顶点和边的任意属性类型,能灵活表达复杂关系。GraphX 提供丰富的图操作,包括顶点和边的映射、子图提取以及聚合计算,并通过 Pregel API 实现迭代式图计算模型,适合大规模并行任务。框架内置 PageRank、连通分量、三角计数等常用图算法,帮助用户快速挖掘结构特征。GraphX 与 RDD 深度集成,可直接利用 Spark 的分布式计算能力,同时通过数据切片、消息压缩和图分区等技术进行性能优化,在处理大规模图数据时具备高效性。其架构设计兼顾了图计算的灵活性与可扩展性,使其既能满足原创 2024-08-28 08:50:05 · 4701 阅读 · 1 评论 -
大数据-104 Spark Streaming 与 Kafka 集成:Offset 管理机制详解与最佳实践 Scala实现
Offset 用于标记 Kafka 分区内消息的位置,正确管理能够实现“至少一次”甚至“仅一次”的数据处理语义。通过持久化 Offset,应用在故障恢复时可从上次处理的位置继续消费,避免消息丢失或重复。Spark 提供多种 Offset 存储方式:检查点机制简单易用,适合快速实现;外部存储如 Zookeeper、Redis、HBase 等更灵活,常用于生产环境;手动管理则具备最高可控性,需开发者实现存储逻辑。实践中,Offset 应在数据处理成功后再提交,并保持提交与处理的原子性,同时需建立监控与重试机制以原创 2024-08-27 09:33:12 · 7341 阅读 · 15 评论 -
大数据-103 Spark Streaming 消费 Kafka:Offset 获取、存储与恢复详解
Spark Streaming 集成 Kafka 时,Offset 管理是保证数据处理连续性与一致性的关键环节。Offset 用于标记消息在分区中的位置,应用可通过它来控制消费进度。若在程序异常退出前未持久化保存 Offset,则会导致数据丢失或重复消费。常见管理方式包括:使用 Checkpoint 保存元数据和 Offset,支持故障恢复但存在版本兼容问题;依赖 Kafka 内置的提交机制,实现简单但控制粒度有限;或选择 外部存储(如 Redis、MySQL、HBase、ZooKeeper),通过手动管理原创 2024-08-27 09:24:24 · 4976 阅读 · 0 评论 -
大数据-102 Spark Streaming 与 Kafka 集成全解析:Receiver 与 Direct 两种方式详解 附代码案例
早期 Kafka-0.8 接口基于 Receiver Approach,通过 Executor 上的 Receiver 持续接收数据,并依赖 BlockManager 管理数据块。该方式实现简单,但存在 CPU 占用高、并行度受限、故障可能导致数据丢失等问题,可通过启用 WAL 增强可靠性。随后出现的 Direct Approach 不再依赖 Receiver,而是直接生成与 Kafka 分区对应的 KafkaRDD,从而提升吞吐效率、简化数据路径,并支持手动维护 Offset原创 2024-08-26 10:45:00 · 4312 阅读 · 5 评论 -
大数据-101 Spark Streaming 有状态转换详解:窗口操作与状态跟踪实战 附多案例代码
窗口操作通过设置窗口长度(windowDuration)和滑动间隔(slideDuration),在比 batchDuration 更长的时间范围内整合多个批次的数据,实现动态的流式计算。典型案例展示了如何通过 reduceByWindow 对窗口内数据进行拼接与求和,以及如何利用 reduceByKeyAndWindow 实现热点搜索词的实时统计,强调了窗口参数与批次间隔的关系。另一方面,状态跟踪操作如 updateStateByKey 和 mapWithState 可用于对流式数据进行全局累计统计。原创 2024-08-26 10:24:24 · 3313 阅读 · 0 评论 -
大数据-100 Spark DStream 转换操作全面总结:map、reduceByKey 到 transform 的实战案例
DStream 的转换操作是 Spark Streaming 的核心,分为无状态(stateless)和有状态(stateful)两类。无状态操作如 map、flatMap、filter、reduceByKey、groupByKey 等,每个批次独立处理,不依赖历史数据;有状态操作则需利用历史批次结果,如 updateStateByKey 和基于窗口的转换,适合追踪状态变化和滑动统计。DStream 还提供 transform 操作,允许直接对 RDD 进行自定义处理,具备高度灵活性,可实现数据清洗、复杂特原创 2024-08-24 09:53:43 · 5552 阅读 · 3 评论 -
大数据-99 Spark Streaming 数据源全面总结:原理、应用 文件流、Socket、RDD队列流
Spark Streaming 提供多种数据源以满足不同场景下的实时处理需求。文件系统数据源可持续监控目录并处理新文件,适合日志分析与报表处理;Socket 流通过 TCP 套接字接收文本数据,简单易用,适合原型开发和测试;Kafka 集成提供 Receiver 和 Direct 两种模式,其中 Direct 模式支持精确一次处理语义,常用于点击流与推荐系统;Flume 支持 Push 与 Poll 两种方式,具备高可靠性,适用于日志收集;Kinesis 则具备高吞吐和低延迟,适合 IoT 与 AWS 实时原创 2024-08-24 09:40:41 · 4493 阅读 · 3 评论 -
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
随着大数据技术的发展,实时处理需求不断增加,传统的批处理框架已难以满足实时推荐、行为分析等场景的需求。Spark Streaming 作为 Spark 的核心组件,采用微批次(mini-batch)架构,将实时数据流切分为小批次并转换为 RDD 进行处理,从而实现高吞吐、低延迟的实时计算。其核心抽象是 DStream,由一系列 RDD 组成,支持来自 Kafka、Flume、HDFS 等多种数据源。开发者可在 DStream 上使用 map、reduce、window 等操作,结合检查点和数据重放机制实现容原创 2024-08-23 09:39:29 · 6570 阅读 · 3 评论 -
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程
在 SparkSQL 中,Join 是常见的数据分析操作,Spark 在物理计划阶段会根据表大小、是否等值 Join、Key 是否可排序等条件自动选择 Join 策略。目前主要有五种:Broadcast Hash Join(BHJ)、Shuffle Hash Join(SHJ)、Shuffle Sort Merge Join(SMJ)、笛卡尔积(Cartesian Product Join)以及 Broadcast Nested Loop Join(BNLJ)。其中 BHJ 和 SMJ 最常用。原创 2024-08-23 09:20:50 · 5054 阅读 · 2 评论 -
大数据-96 SparkSQL 语句详解:从 DataFrame 到 SQL 查询与 Hive 集成全解析
处理结构化与半结构化数据,兼容HiveQL并支持更简洁高效的语法。其核心抽象是DataFrame,支持多种数据源,如关系型数据库、Hive表、Parquet、JSON、CSV等。SparkSQL同时具备强大的SQL查询能力,涵盖标准SQL操作、窗口函数与子查询,并通过Catalyst优化器和Tungsten引擎实现逻辑优化、物理优化、内存管理与代码生成,从而显著提升执行效率。SparkSQL还与Hive深度集成,支持共享元数据和读写Hive表数据,应用场景涵盖数据仓库分析、交互式查询、实时流批处理原创 2024-08-22 09:40:31 · 6381 阅读 · 7 评论 -
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例
Transformation 具有“懒执行”特性,调用时不会立刻计算,而是记录逻辑与依赖关系,构建执行计划(DAG),仅在遇到 Action 时才真正触发运算。这种机制能减少中间存储、优化整体性能。常见 Transformation 包括 select(列选择)、filter/where(条件过滤)、join(数据集连接)、groupBy+agg(分组聚合)、orderBy/sort(排序)、map/flatMap 等,同时支持缓存与检查点来提升效率。Action 则会直接执行任务并返回结果或输出原创 2024-08-22 09:13:12 · 3860 阅读 · 1 评论 -
大数据-94 Spark核心三剑客:RDD、DataFrame、Dataset与SparkSession全面解析
核心数据抽象 RDD 具备不可变性、弹性容错和惰性求值特性,支持并行计算与分区策略,适合迭代式算法、ETL 流程及大规模数据处理。相比之下,DataFrame 提供了结构化数据接口,拥有 Catalyst 优化器和 Tungsten 执行引擎的性能优势,常用于数据仓库查询与分析;而 Dataset 则结合了 RDD 的强类型特征和 DataFrame 的优化能力,兼顾性能与类型安全。三者之间可灵活转换:RDD 可转为 DataFrame 或 Dataset,DataFrame 与 Dataset 也可相互转原创 2024-08-21 09:41:17 · 4814 阅读 · 0 评论 -
大数据-93 SparkSQL 全面解析:SQL + 分布式计算的完美结合
上节研究了Spark的Standalone、SparkContext、Shuffle的V1和V2的对比等内容。本节研究SparkSQL,SparkSQL的基本概念、对比、架构、抽象。SparkSQL 是 Apache Spark 中用于处理结构化数据的模块。它不仅支持 SQL 查询,还允许你将 SQL 查询与 Spark 的其他强大功能结合使用,如数据流处理和机器学习。SparkSQL 提供了对数据的高度优化的访问方式,可以处理大量的结构化和半结构化数据集。原创 2024-08-21 09:09:24 · 4441 阅读 · 0 评论 -
大数据-92 Spark 深入解析 Spark Standalone 模式:组件构成、提交流程与性能优化
集群由 Driver、Master、Worker、Executor 四个核心组件组成。Driver 负责解析用户应用,将逻辑转化为 DAG 并调度任务;Master 作为集群管理器,监控 Worker 并分配资源;Worker 负责向 Master 注册资源并启动 Executor;Executor 则执行具体任务并缓存数据。应用提交流程为:Driver 向 Master 注册 → Master 分配资源 → Worker 启动 Executor → Executor 反向注册 → Driver 分发任务。原创 2024-08-20 09:40:50 · 3756 阅读 · 0 评论 -
大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程
在Spark分布式计算中,广播变量是一种高效共享只读数据的机制。Driver会将数据广播到各Executor,每个Executor仅需接收一次副本,避免了任务间重复传输,显著降低了网络开销。其典型应用包括:分发查找表、机器学习模型参数、配置数据,以及在小表JOIN中优化性能。广播变量具有只读性、可压缩存储、高效传输(BitTorrent-like协议)和自动清理等特点。使用时需注意数据大小和必要性,建议控制在GB级以内。原创 2024-08-20 09:15:35 · 4059 阅读 · 0 评论 -
大数据-90 Spark RDD容错机制:Checkpoint原理、场景与最佳实践 容错机制详解
在Spark中,RDD的容错机制主要依赖于检查点(Checkpoint)。检查点通过将RDD数据持久化到可靠的分布式存储(如HDFS),实现故障恢复和依赖链截断,区别于Persist/Cache等本地存储方式。其核心原理是:对RDD调用checkpoint()后,会在后续的Action操作中触发专门的作业,将数据写入检查点目录,从而消除过长的Lineage依赖链。典型应用场景包括迭代计算(如PageRank)、复杂转换导致依赖链过长,以及对结果可靠性要求较高的关键数据。检查点的优势在于提高容错性和执行效率原创 2024-08-19 09:32:22 · 4090 阅读 · 0 评论 -
大数据-89 Spark应用必备:进程通信、序列化机制与RDD执行原理
Spark的Driver-Executor架构中,Driver通过SparkContext负责资源申请、任务调度与监控,而Executor则执行具体计算。由于两者运行在不同进程中,进程间通信需依赖序列化,Spark支持Java和Kryo序列化机制。用户在RDD操作中定义的闭包及外部变量都会被序列化并传输到Executor端执行,这也是常见错误的来源,如引用不可序列化对象或陷入闭包陷阱。为解决此类问题,可通过实现Serializable接口、使用case class或延迟创建对象等方式。最佳实践包括:保持自定原创 2024-08-19 09:09:43 · 3789 阅读 · 0 评论 -
大数据-88 Spark Super Word Count 全流程实现(Scala + MySQL)
Super Word Count 项目旨在实现一个高效的文本预处理与词频统计系统,并支持结果写入 MySQL。整体流程包括五个步骤:文本统一小写、标点符号清理、停用词过滤、词频统计与排序、以及数据存储。系统支持自定义标点集合与停用词列表,保证灵活性和业务适配性。在实现上,程序基于 Spark 构建,利用 RDD 进行分布式处理,通过正则去除标点,字典结构提升性能,最终通过 foreachPartition 优化批量写入 MySQL,避免频繁连接开销。典型应用场景涵盖舆情分析、搜索引擎索引、文本分类、评论词云原创 2024-08-17 09:43:40 · 3180 阅读 · 0 评论 -
大数据-87 Spark 实现圆周率计算与共同好友分析:Scala 实战案例
首先,圆周率的计算采用了蒙特卡洛方法:在单位正方形中随机生成点,判断其是否落在单位圆内,通过统计比例近似求得 π 值。代码基于 Scala 编写,使用 SparkConf 配置运行环境,并通过 RDD 的 map 与 reduce 操作完成大规模并行计算,体现了分布式计算的高效性。其次,针对好友数据,给出了两种求解共同好友的方法。方法一利用笛卡尔积,两两比对好友集合求交集;方法二则通过数据变形与组合,避免笛卡尔积带来的性能开销。两种方法均通过 Spark 的 RDD 操作实现原创 2024-08-17 09:39:40 · 3574 阅读 · 1 评论 -
大数据-86 Spark+Scala实现WordCount:大数据学习的入门实践
WordCount程序作为大数据学习的“Hello World”,不仅是入门的第一步,更蕴含了分布式计算的核心思想——分而治之。通过使用Spark和Scala实现,从文本加载、单词拆分、映射到计数归约,每一步都展示了分布式处理的基本流程。在实践中,可以深入理解RDD在集群中的分布机制、shuffle带来的性能影响、DAG与lineage实现的容错机制,以及如何合理配置资源。Scala的函数式编程和Spark的惰性求值、内存计算进一步突出了简洁与高效。虽然示例简单,但应用范围广泛,可用于日志分析、用户行为分析原创 2024-08-16 10:10:49 · 5169 阅读 · 0 评论 -
大数据-85 Spark Action 操作详解:从 Collect 到存储的全景解析
Action 是 Spark 中触发实际计算的核心操作,它会将 RDD 的一系列转换真正执行,并返回结果到驱动端或写入外部存储。常见操作可分为几类:数据收集类(如 collect()、collectAsMap())主要用于将数据拉回驱动程序,但需注意大数据集的内存风险;统计类操作(如 count()、stats()、mean() 等)便于快速分析数据特征;聚合类(如 reduce、fold、aggregate)则实现分布式计算中的合并逻辑。原创 2024-08-16 09:54:52 · 4472 阅读 · 0 评论 -
大数据-84 Spark RDD创建全攻略:从集合、文件到转换操作详解
RDD 的创建依赖于 SparkContext,它是 Spark 应用的核心入口,负责与集群管理器建立连接并提供多种功能接口。通过 SparkContext,开发者可以创建 RDD、管理累加器和广播变量、配置运行参数以及进行作业调度。RDD 的创建方式主要有三类:从集合创建(如 sc.parallelize、sc.makeRDD),从文件系统创建(如本地文件、HDFS、S3 等,通过 sc.textFile 加载),以及从已有 RDD 转换得到新的 RDD。原创 2024-08-15 09:20:19 · 4610 阅读 · 0 评论 -
大数据-83 Spark RDD详解:特性、优势与典型应用场景
RDD(Resilient Distributed Dataset,弹性分布式数据集)是Spark中最核心的数据抽象,提供了不可变、分区化、可并行处理的分布式集合。其核心特性包括:分区机制保证并行性;计算函数定义分区的处理方式;依赖关系记录转换链条,支持窄依赖和宽依赖;可选分区器决定数据分布;以及基于数据本地性的优先位置列表。RDD的优势在于容错性(通过血缘关系重建数据)、并行性(充分利用集群资源)、惰性求值(优化执行流程)和缓存机制(提升性能)。它适用于多次使用的数据集、需要细粒度控制的转换操作、复杂处理原创 2024-08-15 08:55:15 · 3663 阅读 · 0 评论 -
大数据-82 Spark 集群架构与部署模式:核心组件、资源管理与调优
Spark集群架构由驱动程序、集群管理器和执行器三大核心组件组成,共同支撑其分布式计算能力。驱动程序是应用的入口,负责创建SparkContext、生成并优化执行计划,并通过集群管理器分发任务。集群管理器则承担资源分配、任务调度和故障恢复等功能,支持多种模式:轻量化的Standalone、与HDFS深度集成的YARN、支持混合负载的Mesos以及云原生的Kubernetes,各具优势。执行器运行在工作节点上,负责具体任务的执行与数据缓存,加快计算效率。Spark支持本地模式、集群模式及基于容器的混合模式原创 2024-08-14 09:31:31 · 3403 阅读 · 0 评论 -
大数据-81 Spark 手把手搭建 分布式计算环境:从下载配置到多节点部署
Apache Spark 是一个开源的分布式数据处理框架,具备高速、通用与易用三大优势,广泛应用于批处理、流处理、机器学习与图计算等场景。它采用内存计算引擎与DAG调度机制,大幅提升任务执行效率。Spark 支持多语言开发(Java、Scala、Python、R),并集成丰富组件如 Spark SQL、Streaming、MLlib、GraphX,能与HDFS、Hive、Kafka等生态系统无缝对接。其良好的扩展性与容错能力,使其成为大数据处理的核心引擎,适合构建高性能、统一的大数据平台。原创 2024-08-14 09:01:11 · 5640 阅读 · 2 评论 -
大数据-80 Spark 从 MapReduce 到 Spark:大数据处理引擎的三代演进全景解析
Spark 是继 MapReduce 和 Hive 之后的新一代大数据处理引擎,凭借内存计算、DAG 执行引擎、统一的生态系统和卓越的兼容性,成为当前主流的大数据分析平台。相比传统 Hadoop MapReduce,Spark 在性能、易用性和生态上都有显著提升,支持批处理、流处理、交互式分析及机器学习等场景。其模块化设计包括 Spark Core、Spark SQL、Streaming、MLlib 和 GraphX 等,可灵活部署在 YARN、Mesos、K8s 或独立集群上。原创 2024-08-13 09:15:08 · 5778 阅读 · 3 评论