郑州 互联网 公司网站那个网站做港货比较好

web/2025/10/7 5:04:18/文章来源:
郑州 互联网 公司网站,那个网站做港货比较好,深圳龙岗邮编,wordpress git项目背景 本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子#xff0c;这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并#xff0c;使得最后落盘的文件不会太大也不会太小#xff0c;从而达到小文件合并的作用#xff0c;…背景 本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并使得最后落盘的文件不会太大也不会太小从而达到小文件合并的作用这其中的主要原理是在于三个规则:OptimizeSkewInRebalancePartitions,CoalesceShufflePartitions,OptimizeShuffleWithLocalRead,这里主要说一下OptimizeSkewInRebalancePartitions规则CoalesceShufflePartitions的作用主要是进行文件的合并是得文件不会太小OptimizeShuffleWithLocalRead的作用是加速shuffle fetch的速度。 结论 OptimizeSkewInRebalancePartitions的作用是对小文件进行拆分使得罗盘的文件不会太大这个会有个问题如果我们在使用Rebalance(col)这种情况的时候如果col的值是固定的比如说值永远是20240320,那么这里就得注意一下关于OptimizeSkewInRebalancePartitions涉及到的参数spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled,spark.sql.adaptive.advisoryPartitionSizeInBytes,spark.sql.adaptive.rebalancePartitionsSmallPartitionFactor 这些值配置如果这些配置调整的不合适就会导致写文件的时候有可能只有一个Task在运行那么最终就只有一个文件。而且大大加长了整个任务的运行时间。 分析 直接到OptimizeSkewInRebalancePartitions中的代码中来: override def apply(plan: SparkPlan): SparkPlan {if (!conf.getConf(SQLConf.ADAPTIVE_OPTIMIZE_SKEWS_IN_REBALANCE_PARTITIONS_ENABLED)) {return plan}plan transformUp {case stage: ShuffleQueryStageExec if isSupported(stage.shuffle) tryOptimizeSkewedPartitions(stage)}}如果我们禁用掉对rebalance的倾斜处理也就是spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled为false默认是true那么就不会应用此规则那么如果Col为固定值的情况下就只会有一个Task进行文件的写入操作也就只有一个文件因为一个Task会拉取所有的Map的数据(因为此时每个maptask上的hash(Col)都是一样的此时只有一个reduce task去拉取数据)如图 假如说hash(col)为0那实际上只有reduceTask0有数据其他的ReduceTask1等等都是没有数据的所以最终只有ReduceTask0写文件并且只有一个文件。 在看合并的计算公式该数据流如下 tryOptimizeSkewedPartitions||\/optimizeSkewedPartitions||\/ShufflePartitionsUtil.createSkewPartitionSpecs||\/ShufflePartitionsUtil.splitSizeListByTargetSizesplitSizeListByTargetSize方法中涉及到的参数解释如下 参数 sizes: Array[Long] 表示属于同一个reduce任务的maptask任务的大小数组举例 sizes [100,200,300,400] 表明该任务有4个maptask0表示maptask为0的所属reduce的大小1表示maptask为1的所属reduce的大小依次类推,图解如下: 比如说reduceTask0的从Maptask拉取的数据的大小分别是100,200,300,400. 参数targetSize 为 spark.sql.adaptive.advisoryPartitionSizeInBytes的值假如说是256MB参数smallPartitionFactor为spark.sql.adaptive.rebalancePartitionsSmallPartitionFactor 的值默认是0.2 这里有个计算公式 def tryMergePartitions() {// When we are going to start a new partition, its possible that the current partition or// the previous partition is very small and its better to merge the current partition into// the previous partition.val shouldMergePartitions lastPartitionSize -1 ((currentPartitionSize lastPartitionSize) targetSize * MERGED_PARTITION_FACTOR ||(currentPartitionSize targetSize * smallPartitionFactor ||lastPartitionSize targetSize * smallPartitionFactor))if (shouldMergePartitions) {// We decide to merge the current partition into the previous one, so the start index of// the current partition should be removed.partitionStartIndices.remove(partitionStartIndices.length - 1)lastPartitionSize currentPartitionSize} else {lastPartitionSize currentPartitionSize}}。。。while (i sizes.length) {// If including the next size in the current partition exceeds the target size, package the// current partition and start a new partition.if (i 0 currentPartitionSize sizes(i) targetSize) {tryMergePartitions()partitionStartIndices icurrentPartitionSize sizes(i)} else {currentPartitionSize sizes(i)}i 1}tryMergePartitions()partitionStartIndices.toArray这里的计算公式大致就是从每个maptask中的获取到属于同一个reduce的数值依次累加如果大于targetSize就尝试合并直至到最后一个maptask 可以看到tryMergePartitions有个计算公式:currentPartitionSize targetSize * smallPartitionFactor,也就是说如果当前maptask的对应的reduce分区数据 小于 256MB*0.2 51.2MB 的话也还是会合并到前一个分区中去如果smallPartitionFactor设置过大可能会导致所有的分区都会合并到一个分区中去最终会导致一个文件会有几十GB(也就是targetSize * smallPartitionFactor*shuffleNum) 比如说以下的测试案例 val targetSize 100val smallPartitionFactor2 0.5// merge last two partition if their size is not bigger than smallPartitionFactor * targetval sizeList5 Array[Long](50, 50, 40, 5)assert(ShufflePartitionsUtil.splitSizeListByTargetSize(sizeList5, targetSize, smallPartitionFactor2).toSeq Seq(0))val sizeList6 Array[Long](40, 5, 50, 45)assert(ShufflePartitionsUtil.splitSizeListByTargetSize(sizeList6, targetSize, smallPartitionFactor2).toSeq Seq(0))这种情况下就会只有一个reduce任务运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站调用无广告视频怎么做好营销型网站

Windows是由微软(Microsoft)开发的一系列操作系统的名称。以下是Windows系统的历史版本简介: 1. **Windows 1.0 (1985):** - 首个发布的Windows版本。 - 图形用户界面(GUI)的引入,包括窗口、图标和…

如何自建一个便宜的网站抓取工具把对手网站的长尾词

线性倒立摆(Linear Inverted Pendulum, LIP)模型是用于描述和控制人形机器人步态的重要工具。LIP模型假设质心沿着一条固定的直线运动,并且所有质量集中在质心上。这简化了计算,使得模型更容易用于控制和稳定分析。 LIP模型动力学方程 LIP模型的基本假设是: 机器人的质心…

吴江网站制作响应式 购物网站模板下载

快速排序 主要思想: 主要是基于分治。(分治解读) 基本步骤: 1.确定分界点x ,常用方式q[l] q[l r >> 1] , q[r] , 左右部分未必长度相等 2.根据分界点x调整区间,使得满足小于等于x的在左边,大于等于x的在右边 3.左右两端&#xf…

新站seo竞价18末年禁止3000部在线

引言:容器是什么?什么是容器?Spring容器又是啥东西?我给Spring容器一个对象名字,为啥能给我创建一个对象呢? 一、容器是装东西的,就像你家的水缸,你吃饭的碗等等。 java中能作为容器…

织梦cms怎么做双语网站漳州 网站建设公司

文 | 天于刀刀犹记 2018 年底谷歌开源 BERT 后,一大批基于 Attention 机制 Transformer 结构的大模型横空出世。XLNet、MPNet、ERNIE,NLP 任务彻底迈入大规模语料训练 fintune 的时代。之前一段时间爆火的 prompt 概念也离不开大模型中最基本的预训练 M…

网络在线培训网站建设方案开淘宝网店的全流程

首先在git上输入 : ssh-keygen 会在c盘的用户账号的文件夹.ssh上生成两个密钥 (如果没有生成,请注意自己是否按了enter,出现一个小方框为止) 将.pug用笔记本打开 全选复制 来到github的设置上 将刚刚复制的东西黏…

汽车门户网站源码江门营销型网站建设公司

今天是6月15日,大约两个月的时间里我看完了《资治通鉴(二)》,回顾一下这本书主要讲了哪些帝王的故事。 汉武帝刘彻,公元前141年至前87年在位54年,他加强了中央集权,尊崇儒术,开创了丝…

网站的表现形式wordpress+关闭warning

工地ai智能分析盒子是一种基于人工智能视觉分析技术的人工智能盒子,旨在提升工地作业区域的管理效率和保障作业人员的安全。通过最前沿的AI视觉算法、大数据,能够实时监控工地现场视频流画面,对施工工地人员的工作着装及日常作业行为进行规范…

怎么看网站开发者页面做政务网站

1)程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后续操作。2)监视器锁规则:对一个锁的解锁,happens-before于随后对这个锁的加锁。3)volatile变量规则:对一个v…

优惠活动制作网站网站双链接怎么做

动态规划 - 509.斐波那契数(C#和C实现) 题目描述 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1…

网站开发前台和后台wordpress必用插件

上一篇对自定义View及一些方法有所了解,下面做一个简单的叶子飘动的例子主要技术点1、添加背景图片canvas.drawBitmap()2、Matrix动画类3、Matrix添加到画布上步骤1、添加黄色背景颜色public LeafView(Context context, AttributeSet attrs) {super(context, attrs)…

京东的电子网站建设百度推广登录网站

文章目录 React Diff算法一、它的作用是什么?二、React的Diff算法1.了解一下什么是调和?2.react的diff算法3.React Diff的三大策略4.tree diff:1、如果DOM节点出现了跨层级操作,Diff会怎么办? 5. component diff:6. e…

网站建设需要有什么特点wordpress 列表页输出

作者:Salini Agarwal 排版:Alan Wang 今天,我们发布了针对 .NET Framework 的2023 年 8 月安全和质量汇总更新。 安全 CVE-2023-36899 – .NET Framework 远程代码执行漏洞 此安全更新修复了 IIS 上的应用程序存在的一个漏洞,该…

成都市成华区建设路商务中心网站做网站电脑和手机都是一样可以看吗

在优化索引时,思考了一个问题,DATE, DATETIME, TIMESTAMP,还有INT存储的时间,在索引中哪个效率更高一些?索引存储的,如果单纯的测试,而不去了解底层存储的方式和类型就不能断言哪个类型的效率更…

安平县护栏网站建设网站建设如何存数据

实现 Interceptor接口 方法1 是初始化: 方法2和3重载 拦截: 方法3 是关闭: 但是flume是通过内部类创建对象的

电子商城网站开发多少钱WordPress添加前台投稿插件

张量的生成 如何判断一个张量的维数:看张量的中括号有几层 0 1 2 :零维数列 [2 4 6] : 一维向量 [ [1 2 3] [4 5 6] ] : 二维数组 两行三列 第一行数据为 1 2 3 第二行数据为 4 5 6 以此类推 n维张量有n层中括号 tf.zeros(%指定一个张量的维数%) 生成一…

防城港建设局网站成都旅游路线规划

Linux音频控制与Linux音频系统结构一样混乱。 长篇小说,经过多年的发展,默认的声音控制工具看起来像这样:设置音量级别的默认和唯一选项可能对于大多数用户来说是足够的,但是当您想要设置特定音频级别或为不同音频源定义各自的设置…

个人或主题网站建设 实验体会个人网站托管

前言:在日常的程序设计中,我们会经常使用到字符串。比如一个人的身份证号,家庭住址等,只能用字符串表示。在C语言中,我们经常使用字符数组来存储字符串,但是某些场景(比如插入,删除)下操作起来很…

建设银行网站查余额查询百度域名注册

通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用来创建数…

如何创建二级域名网站学校网站查询

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面&#xff0…