Spark源码解析 - 分布式计算执行流程

将DF的action操作转为RDD操作 以DataSet#head这个action算子为例 1 2 3 4 5 6 org.apache.spark.sql.Dataset#head:2728 org.apache.spark.sql.Dataset#collectFromPlan:3715 org.apache.spark.sql.execution.TakeOrderedAndProjectExec#executeCollect // 这里是调用了SparkPlan子类UnaryExecNode类型的TakeOrderedAndProjectExec重写的executeCollect
阅读更多

Spark源码解析 - Spark SQL处理过程

以Spark 3.2.0版本为基准,分析Spark SQL执行过程 Parsing阶段 Parsing阶段基于ANTLR4实现,用于将SQL解析为Unresolved Logical Plan。具体流程为,在执行SQL查询时,通过SparkSession的sessionState属性,调用sessionState.sqlParser.parsePlan方法进行解析。sqlParser内部实际借助AstBuilder,并采用访问者模式(Visitor Pattern),遍历ANTLR4生成的各类语法树Context节点,将其转换为对应的LogicalPlan节点,最终构建出Unresolved
阅读更多

Spark源码解析 - spark-submit提交过程

以Spark 3.2.0版本为基准,yarn-cluster 模式的 spark application 提交过程如下 Client 提交 AM 到 yarn 过程 通过 spark-submit 提交 spark 任务之后,client 端将 ApplicationMaster 提交到 yarn 的过程如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 org.apache.spark.deploy.SparkSubmit#main:1052 org.apache.spark.deploy.SparkSubmit#doSubmit:1043 org.apac
阅读更多

Hadoop常见问题

hdfs文件系统中的角色 NameNode:是HDFS的主节点,负责管理文件系统的命名空间和元数据信息。维护了整个文件系统的目录树结构以及文件和数据块的映射关系 - 重要组件 - fsimage:它是在NameNode启动时对整个文件系统的快照。NameNode启动的时候,会读取fsimage并跟edit logs合并,得到完整的文件系统快照 - edit logs:它是在NameNode启动后,对文件系统的改动序列。改动会通过edit logs写入文件系统 SecondaryNameNode: - 作用:为了避免edit logs文件越来越大,NameNode重启会花费很长时间,SNN的职责
阅读更多

interview record 0

一轮 Java 1. 10亿数取TOPK Hive SQL 2. 最近7天连续登陆3天的用户 3. 每科排名前3的学生 自我介绍 项目经历 kafka isr集合作用 kafka副本同步机制 kafka如何保证数据不丢失 项目和airflow、dolphinscheduler相比优势是什么?事件驱动,延迟队列(没说出来) 项目设计比较好的地方?延迟队列(没说出来),批处理优化(没说出来),dag运行干预(没说出重点) 依赖上游任务情况下,希望最晚等到几点就开始执行,怎么设计?弱依赖最晚等待时间 java基本
阅读更多

Spark原理和实践

Spark概念 Spark 是一个基于内存的大数据分布式计算框架 RDD: Partition: Job: Task: Driver: Executor: Spark为什么比MapReduce执行更快 * DAG 执行模型:Spark 将整个计算构建成一个有向无环图(DAG),可对多步算子进行统一调度和优化;MapReduce 则强制每个 Job 都是单一的 Map→Shuffle→Reduce,阶段之间无融合 * 算子融合(Pipelining):对多个窄依赖算子(如 map、filter)进行链式执行,在同一个 Task 中完成,不产生中间写盘;MapReduce 每步都要落盘并重新
阅读更多

回溯相关题目整理

原则: 1. 回溯函数需要path、ans参数 2. 允许包含重复数字,则处理前一定要先排序 3. 只有全排列需要记录used[i],因为需要区分重复的元素 Generate Parentheses 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”] 示例 2: 输入:n = 1 输出:[“()”] 提示: * 1 <= n <= 8 1 2 3 4 5 6 7 8 9 10 11 12
阅读更多

MySQL原理和实践

一条SQL的执行过程 1. 客户端连接到服务端的连接器 2. 分析器进行词法分析(解析关键字和字段名)和语法分析(判断是否符合MySQL语法) 3. 如果是查询语句,有缓存则查缓存 4. 优化器决定SQL的执行顺序 5. 表权限校验,执行器调用存储引擎读写接口进行操作。如果是InnoDB写操作具体流程是 1. 调用查询接口查询数据 2. 查询引擎从磁盘读取到内存,返回数据 3. 执行器变更数据,调用查询引擎写入数据 4. 新数据更新到内存,写入redolog 5. 执行器写binlog 6. 提交事务,写数据 r
阅读更多