05 2022 档案

摘要:结论 EventLoop是一个调度,其内部使用LinkedBlockingDeque类型的eventQueue对象,存储待处理的任务。 死循环调度线程 eventThread 不停的查询 eventQueue 中的新数据。 通过post方法, 提交任务到队列中。 EventLoop -> onRec 阅读全文
posted @ 2022-05-29 11:36 608088 编辑
摘要:结论 DAGScheduler 在主线程提交任务到EventLoop阻塞队列中 DAGScheduler 在主线程等待异步任务的执行完成 EventLoop 回调 DAGScheduler的onReceive方法,进行Stage拆分 为什么不直接在主线程完成 猜想是因为采用 "生产消费" 设计,调度 阅读全文
posted @ 2022-05-29 11:27 608088 编辑
摘要:结论 DAGScheduler → runJob def runJob[T, U]( val waiter = submitJob(rdd, func, partitions, callSite, resultHandler, properties) ... // 等待job执行结束 ThreadU 阅读全文
posted @ 2022-05-29 10:47 608088 编辑
摘要:结论 action类型的算子,最终由 SparkContext.runJob 触发 DAGScheduler.runJob action算子最终触发sparkContext.runJob saveAsTextFile action算子触发 /* 底层调用 SparkHadoopWriter.writ 阅读全文
posted @ 2022-05-29 08:01 608088 编辑
摘要:结论 两种方式都是包装模式,即传入对象自己,然后生成新的对象; 非shuffle类算子,每次调用创建 MapPartitionsRDD shuffle类算子,每次调用创建 ShuffledRDD 非shuffle类 val words = lines.flatMap(_.split("\\s+")) 阅读全文
posted @ 2022-05-23 22:04 608088 编辑
摘要:理解 goalSize:每个分区的预估大小(字节) splitSize: 实际分区大小 预估分区大小不足128M, 按照预估大小; 如果超过128M 就是128M 源码 public InputSplit[] getSplits(JobConf job, int numSplits) throws 阅读全文
posted @ 2022-05-21 23:42 608088 编辑
摘要:环境调试 引入依赖 上篇文章提到SpartSubmit最终调用YarnClusterApplication对象的start方法, YarnClusterApplication代码存在于依赖包 spark-yarn 中,本文代码需要引入如下pom. 调试代码和生产代码不需要此依赖包。 <depende 阅读全文
posted @ 2022-05-04 12:08 608088 编辑
摘要:结论 spark-submit命令是SparkSubmit类提供的命令行功能,通过解析命令行参数判断运行模式,集群方案,额外参数等信息,此例中触发YarnClusterApplication的start方法。 Spark submit 提交集群 Spark提交集群命令 spark-submit -- 阅读全文
posted @ 2022-05-03 21:36 608088 编辑
摘要:结论 SparkContext启动,根据setMaster设置的Url匹配运行模式。 SparkContext // 根据设置的master字符串的内容进行匹配 master match { // local模式 case "local" => ... ... // local[n] 和 local 阅读全文
posted @ 2022-05-03 18:20 608088 编辑
摘要:结论 SparkConf设置的key / value 保存在SparkConf名为settings的变量中,该变量类型为ConcurrentHashMap SparkConf的setXX方法, 封装了特定的属性名和值存储到map中 SparkConf的set方法,直接将属性名和值存储到map中。 属 阅读全文
posted @ 2022-05-03 18:07 608088 编辑
摘要:版本 本分析基于Spark version 3.1.2 Spark相关 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.1.2</version> 阅读全文
posted @ 2022-05-03 17:58 608088 编辑
摘要:结论 local模式下,没有显示指定分区数(minPartitions),默认最小分区数不会超过2。 如果对spark.default.parallelism属性赋值 && 值>=2,则分区数为2. 其他情形分区数为1. 集群模式下,没有显示指定分区数(minPartitions),分区数(minP 阅读全文
posted @ 2022-05-03 17:45 608088 编辑

点击右上角即可分享
微信分享提示