
Spark
文章平均质量分 80
Spark
WZMeiei
这个作者很懒,什么都没留下…
展开
-
Spark 中,创建 DataFrame 的方式(Scala语言)
在 Spark 中,创建 DataFrame 的方式多种多样,可根据数据来源、结构特性及性能需求灵活选择。原创 2025-05-24 13:33:46 · 1069 阅读 · 0 评论 -
DataFrame 和 Dataset的对比理解
两个层面理解,而不是简单的 “行” 或 “列” 的包含关系。在 Spark 中,原创 2025-05-24 13:16:59 · 847 阅读 · 0 评论 -
Spark 中,map和foreach的区别
特性mapforeach操作类型转换操作(返回新 RDD)行动操作(无返回值)用途数据转换执行副作用(如写入外部系统)执行时机惰性执行立即执行常见场景映射、过滤、转换数据打印日志、写入数据库 / 文件系统注意事项链式调用转换操作,最后触发行动避免在 foreach 中修改外部变量。原创 2025-05-24 12:32:50 · 462 阅读 · 0 评论 -
Spark on YARN 的运行架构总览
ResourceManager 根据资源情况分配 Container 给 ApplicationMaster,ApplicationMaster 与对应的 NodeManager 通信,让 NodeManager 启动包含 Spark Executor 的容器。:Spark Driver 在 ApplicationMaster 中或单独的容器中运行,负责调度和监控任务,Executor 在各自容器中执行具体的 Spark 任务,完成数据处理。原创 2025-05-24 12:14:18 · 867 阅读 · 0 评论 -
YARN与Spark组件架构关系及交互机制:从ResourceManager到Executor的层级、依赖与通信链路解析
RM,NM,AM,Container,Driver,Executor,Spark on Yarn,Spark Standalone,YARN 是资源管理者:RM 统筹全局资源,NM 管理节点资源,Container 是资源分配的最小单位AM 是桥梁:在 YARN 中代表 Spark 应用,负责向 RM 申请资源,启动 Driver 和 ExecutorDriver 与 Executor 是计算核心:Driver 调度任务,Executor 执行任务原创 2025-05-24 12:03:01 · 556 阅读 · 0 评论 -
Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)
AM,Container,Driver,Executor,Spark on Yarn,Spark Standalone原创 2025-05-24 10:45:13 · 1439 阅读 · 0 评论 -
区分:union(),coalesce () 和 repartition ()
算子合并对象是否改变分区数数据是否 shuffle核心场景union()多个 RDD 的数据是(叠加原分区数)否快速合并多个数据集coalesce()同一个 RDD 的分区是(通常减少)否(默认)减少分区数,避免 shuffle同一个 RDD 的分区是(任意调整)是彻底重分区,解决数据倾斜union():多个 RDD 的数据合并(分区数叠加)。:同一个 RDD 的分区合并(调整数据分布)。原创 2025-05-22 15:04:11 · 1063 阅读 · 0 评论 -
对比ds.select(“id“).show() 和 ds.map(x => x.id).show()
操作操作对象列名(字符串)对象属性(如x.id返回类型DataFrame(即Dataset[具体类型](如适用场景简单选择列需要转换或计算列值列名控制保留原列名默认列名为"value",需手动重命名。原创 2025-05-21 18:53:18 · 324 阅读 · 0 评论 -
Scala:size 和 length 的区别
返回的是 RDD[(K, Iterable[V])]的类型是 Iterable[Double]都可用于获取集合的元素数量,但它们的。在 Scala 中,以一下代码为例,解释。原创 2025-05-19 11:54:38 · 424 阅读 · 0 评论 -
辨析Spark 运行方式、运行模式(master)、部署方式(deploy-mode)
为了理清 Spark 运行方式、部署模式(master)、部署方式(deploy-mode) 之间的关系,我们先明确几个核心概念,再对比它们的联系与区别。指 如何启动和运行 Spark 代码,就是代码在哪上面运行常见有三种:REPL 方式(交互式)spark-submit 方式(任务提交)集成开发环境(IDE,如 IDEA)更详细的Spark运行方式请见辨析Spark代码的不同运行方式:交互,submit,集成开发环境-优快云博客 指 Spark 应用运行时的资源管理方式,通过 指定,决定了任务运行在原创 2025-05-18 10:32:54 · 1392 阅读 · 0 评论 -
Spark 的运行模式(--master) 和 部署方式(--deploy-mode)
开发调试、本地测试(无需真实集群资源)。:生产环境(需调度真实集群资源)。,两者的核心区别在于。原创 2025-05-18 10:22:30 · 804 阅读 · 0 评论 -
辨析Spark代码的运行方式:交互,submit,集成开发环境
本质上都是通过 Spark 引擎执行计算,但适用场景和执行流程各有区别。原创 2025-05-18 10:18:39 · 572 阅读 · 0 评论 -
Spark Streaming 内部运行机制详解
Spark Streaming 启动接收器线程,持续监听数据流并缓存到内存(或磁盘)。:定期保存 DStream 的血缘(Lineage)和元数据,故障时从检查点恢复。:处理完一个批次后,结果写入外部系统(如 HDFS、数据库)或展示在实时仪表盘。对比真正的实时处理(如 Flink 的逐事件处理),延迟稍高但吞吐量更大。结合事务性写入(如数据库事务),保证每个批次的数据处理且仅处理一次。:按固定时间间隔(如 1秒、5秒)将数据流切割为多个小批次(:若间隔为 2秒,则每 2秒的数据组成一个批次,形成。原创 2025-05-13 13:58:07 · 1037 阅读 · 0 评论 -
Spark SQL 运行架构详解(专业解释+番茄炒蛋例子解读)
Spark SQL的运行过程可以想象成一个"SQL查询的加工流水线",从原始SQL语句开始,经过多个阶段的处理和优化,最终变成分布式计算任务执行。主要流程如下:SQL Query → 解析 → 逻辑计划 → 优化 → 物理计划 → 执行 → 结果2. 详细阶段解析阶段1:SQL解析(Unresolved Logical Plan) 输入:用户提交的SQL查询语句处理:Spark使用ANTLR等解析器将SQL文本转换为语法树(AS原创 2025-05-12 22:26:22 · 1146 阅读 · 0 评论 -
Scala 中累加器的创建与使用格式详解
属性在 Driver 端读取结果。,避免重复计算和序列化问题。并实现方法,然后注册。原创 2025-05-11 16:26:21 · 360 阅读 · 0 评论 -
常见的会触发 Shuffle 的操作和方法
例如,Key 为 A 的数据分布在分区1和分区2,需将两个分区的 A 数据合并。:某些分区的数据量远大于其他分区,导致 Shuffle 时部分节点负载过高。:将不同分区中相同 Key 的聚合结果传输到同一个分区,最终合并。:父 RDD 的一个分区数据被子 RDD 的多个分区依赖(如。:每个分区内先对相同 Key 的值进行预聚合(如求和)。,常见于分组、排序、关联等场景。以 reduceByKey。原创 2025-05-11 15:38:03 · 261 阅读 · 0 评论 -
用统计零花钱的例子解释:Shuffle 是啥?
班长喊:“所有张三的记录传给机器A,李四的传给机器B,王五的传给机器C!:统计每个同学的总零花钱(比如张三的所有钱加起来是多少)。第1组:张三(5元)、李四(3元)、张三(2元)第2组:王五(4元)、张三(1元)、李四(2元):张三(1元)、李四(2元)、王五(4元)机器A 收到张三的数据:7元、1元、3元。机器B 收到李四的数据:3元、2元、1元。机器C 收到王五的数据:4元、6元、2元。第3组:王五(6元)、李四(1元):张三(5+2=7元)、李四(3元)第4组:张三(3元)、王五(2元)原创 2025-05-11 15:23:48 · 313 阅读 · 0 评论 -
Spark任务调度流程详解
TaskScheduler根据数据本地性(Data Locality)分配Task到Executor。:单个Task失败后,TaskScheduler会重新调度(默认最多3次)。:与集群管理器(如YARN、K8s)通信,管理Executor资源。确保输入数据与Executor在同一节点(如HDFS副本策略)。:若某个Stage失败,重新提交该Stage的所有Task。Executor执行Task,向Driver汇报状态。:将Task分配到Executor,监控任务执行。(宽依赖,单独一个Stage)。原创 2025-05-11 15:09:55 · 913 阅读 · 0 评论 -
spark:map 和 flatMap 的区别(Scala)
比如将字符串转大写、对数字做运算。:比如将句子拆成单词、展开嵌套集合。(所有单词在一个数组中)。→ 输出一个单词数组。→ 输出一个单词数组。(每个元素还是数组)。原创 2025-05-11 14:20:24 · 562 阅读 · 0 评论 -
用「班级统计零花钱」的例子讲透reduceByKey( )与groupByKey( )的区别
老师再收纸条时,每个同学只有。原创 2025-05-11 13:24:22 · 354 阅读 · 0 评论 -
RDD转换操作中的 关于数据分区coalesce 和 repartition 的区别
把苹果全部倒出来,重新均匀分装到新箱子(比如 10 箱 → 15 箱 或 10 箱 → 5 箱)。:苹果很多且要分给更多人处理(增加并行度),或者原来箱子大小不均。把相邻的箱子直接合并(比如 10 箱 → 5 箱)。:苹果变少了(比如扔掉了烂苹果),箱子太多没必要。:可能有的箱子苹果多,有的少(数据倾斜)。:每个箱子苹果数量差不多(数据平衡)。:偷偷合并箱子(不重新整理),适合。:彻底重新分装(全部倒出来),适合。:省时间,不用倒出来重新装。,增加分区或均匀数据用。:费时间,要重新整理。原创 2025-05-11 13:10:25 · 209 阅读 · 0 评论 -
RDD 两类操作详解(Scala):转换与行动
Spark 将多个转换操作合并为单个 Stage,减少计算步骤。:通过血缘关系(Lineage)重建数据,无需保存中间状态。:触发实际计算,返回结果到驱动程序或写入外部存储。若多次调用行动操作,每次都会重新计算整个血缘链。:从一个已有的 RDD 生成一个新的 RDD。会将所有数据拉取到驱动端,可能导致 OOM。:定义“要做什么”,如数据清洗、映射、过滤。:定义“何时执行”,如统计、保存、输出结果。:仅在必要时计算,节省内存和磁盘 I/O。,会生成 Job 并提交到集群。,仅记录操作逻辑,不立即计算。原创 2025-05-11 09:43:35 · 1164 阅读 · 0 评论 -
Spark的三种部署模式及其特点与区别
Driver负责任务调度,Executor执行计算,Cluster Manager管理资源。Driver向ResourceManager申请Executor资源。:依赖外部集群管理器(如YARN的ResourceManager)。执行Driver分配的Task(如Map、Reduce操作)。:高扩展性,适合大规模集群(如YARN支持千级节点)。:Driver运行在集群的某个节点(由YARN管理)。Executor执行Task,返回结果给Driver。Driver将Task分发到Executor。原创 2025-05-10 22:50:24 · 1006 阅读 · 0 评论 -
Spark SQL概述(专业解释+生活化比喻)
特性SQLDataFrameDataSet类型检查运行时运行时编译时(强类型)语言支持所有语言Java/Scala适用场景简单查询复杂数据处理类型安全需求高性能相同(底层都经过Catalyst优化)Spark SQL是什么:处理结构化数据的工具,支持SQL和编程API。运行原理:SQL→解析→逻辑计划→优化→物理计划→生成代码→分布式执行。如何选择简单查询用SQL;复杂逻辑用DataFrame/DataSet;需要类型安全选DataSet(Java/Scala)。原创 2025-04-21 17:09:15 · 767 阅读 · 0 评论 -
spark集群,Stand alone,Hadoop集群有关启动问题
Spark 有自己独立的启动脚本,与 Hadoop 无关。(用于启动 HDFS 和 YARN),而不是 Spark 的启动脚本。启动了 Hadoop 相关服务(HDFS/YARN),再次执行。会导致服务重复启动冲突。如果已经启动了 Hadoop YARN,原创 2025-04-10 16:54:57 · 480 阅读 · 0 评论 -
用学生成绩统计的例子理解 Shuffle 的底层逻辑(Spark)
想象一下,你有分散在不同机器上的数据,现在需要按某个规则(比如相同的 Key)重新组合,这就是 Shuffle。:统计全年级每个学生的。原创 2025-04-02 17:55:14 · 565 阅读 · 0 评论 -
如何理解:Spark RDD执行foreach 行动操作产生一个Job,reduceByKey操作产生shuffle,因此一个Job被切分为两个Stage:Stage0和 Stage 1
复制代码。原创 2025-04-02 17:03:28 · 359 阅读 · 0 评论