范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何基于Spark和ZOrder实现企业级离线数仓降本提效?

  01
  Spark 企业级离线数仓面临的痛点   企业级数仓类的任务基本以 ETL 类型为主,典型的读取多张表的数据经过一系列 SQL 算子转换后写到一张表。那么除了在性能上 Spark3 已经有了充分的保障,剩下的使用痛点集中在了写这个环节。Hive 和 Spark2 在写这个环节也存在很多问题,比如小文件&文件倾斜,数据压缩率不理想,动态分区写难以优化。针对这些问题,下面我们逐个分析当前的状况,并给出新的解决方案。   ·小文件 & 文件倾斜   传统的解决方案是在 SQL 后面增加一个 DISTRIBUTE BY $columns ,这本质上是增加一次额外的 Shuffle 来对数据重新分区,产出的文件质量强依赖于这个 Shuffle 字段,然而在大部分场景中,数据倾斜是必然的,这造成了部分计算分区需要处理特别大的数据量,不仅带来文件倾斜问题,在性能上也会拖累整个任务完成时间。   对执行引擎有一定了解的同学可能会用非常 hack 方式来优化DISTRIBUTE BY rand() * files,但是这无论是我们内部已经复现的 rand() 导致数据不一致,还是 Spark 社区抛出来的问题:Repartition + Stage retries could lead to incorrect data ,都足以证明这是一个有缺陷的方案,可能会导致数据不一致,我们应当避免这种使用方式。   除此之外,一些有经验的同学会通过取模的方式来调整倾斜的数据,比如DISTRIBUTE BY $column % 100, $column。这是一种可行的解决方案,但存在几个缺陷:   1)存在优化上限;通过优化调试很难判断最佳的取模范围,只能给一个相对可以接受的优化结果   2)有很大的优化代价;需要非常了解字段的数据分布情况,再经过不断调试验证最终找到较为合理的值   3)维护成本比较高;可能过1个月,数据发生了一些变化,那么之前优化的取模值就变得不合理   ·数据压缩率不理想   传统的解决方案是在 SQL 后面增加一个 SORT BY $column,这本质上是在写之前增加一次分区内的排序来提高数据压缩率。或者结合 Shuffle增加 DISTRIBUTE BY $columns SORT BY $columns 让相同数据落到一个分区后再做局部排序进一步提高数据压缩率。那么问题来了,首先这也绕不过 小文件 & 文件倾斜的问题,这里就不再重复。其次传统的字典排序不能很好的保留多维场景下数据的聚集分布,这里的多维在数仓场景下可以理解成多字段。而优秀的数据聚集分布可以在查询阶段提高数据文件的 Data Skipping 比例。我们目前大部分任务都只考虑任务本身的性能,需要逐渐重视下游任务查询的性能,从而形成一个良好的循环。   ·动态分区写场景难以优化   动态分区一般出现在写大表的任务,单天的数据量往往超过 1TB,当然从业务角度出发这是合理的,拆分区后下游任务查询非常灵活高效。但是动态分区类的任务本身优化就非常麻烦,自带小文件问题,压缩率不高,加上数据量大,这简直就是"强强联合"。而且仔细思考一下就可以发现,动态分区场景下,小文件和压缩率其实是互斥的,如果以尽可能少的文件数优先,那么我们需要考虑用分区字段作为 Shuffle 和排序字段,让相同分区数据落到一个计算分区内,但是压缩率高低却取决于其他数据字段,造成低压缩率现象。而如果以压缩率优先,那么我们需要考虑数据字段作为 Shuffle 和排序字段,但此时相同分区数据会落到不同计算分区,产生大量小文件。   面对这一系列问题,我们基于 Spark3 + Z-Order 提出了以下这些解决方案,并且已经在线上环境取得了非常好的效果。   02
  Rebalance + Z-Order   2.1 方案介绍   Z-Order 是一种可以将多维数据压缩到一维的技术,在时空索引以及图像方面使用较广。Z曲线可以以一条无限长的一维曲线填充任意维度的空间,对于数据库的一条数据来说,我们可以将其多个要排序的字段看作是数据的多个维度,z曲线可以通过一定的规则将多维数据映射到一维数据上,构建 z-value 进而可以基于该一维数据进行排序。   基于最经典的使用方式DISTRIBUTE BY + SORT BY,我们提出了新一代的优化方案 REBALANCE + Z-Order。REBALANCE 可以在尽可能满足 DISTRIBUTE BY 语义的情况下同时解决 小文件 & 文件倾斜问题。这里用"尽可能满足"这个词是因为,文件倾斜本质上是由于计算分区倾斜导致,那么我们把倾斜分区拆成多个的同时也就破坏了 DISTRIBUTE BY 语义,当然这不影响数准确性,也不会带来其他问题。基于 Z-Order 算法的排序替换了默认的字典排序,允许在多维场景下继续保留多维数据的聚集分布,在提高压缩率的同时可以加速下游任务的查询性能。   Rebalance + Z-Order   上图展示了Rebalance + Z-Order 运作原理 ,涉及表的上游任务以及下游任务。首先 Rebalance 以Shuffle 的形式存在,并在 Shuffle 读阶段做分区的拆分和合并,保证每个 Reduce 分区处理相同规模的数据量。基于 Z-Order 的 Data Skipping 优化强依赖于文件格式,我们知道 Parquet 和 ORC 这类主流的列式存储格式会在写数据的同时记录数据的统计信息,比如 Parquet默认会以 Row Group 粒度记录字段的min/max 值,在查询这个文件的过程中,我们会把被 Push Down 的谓语条件和这些统计值做对比,如果不满足条件那么我们可以直接 Skip 这个 Row Group 甚至整个文件,避免拉取无效的数据,这就是 Data Skipping 过程。   2.2 案例分析   落地到具体任务中,可以进行从 Spark2 升级到 Spark3 再做 Z-Order 优化的操作。   ·Spark2 -> Spark3   在实际操作中,由于引入了一次 Shuffle,任务会多一个 Stage,但执行时间却大幅度缩短。这是因为原本的任务在最后一个 Stage 存在数据膨胀和严重倾斜的情况,导致单个计算分区处理的数据量非常大。经过 Rebalance 后,额外的 Stage 把膨胀的数据打散,并且解决了倾斜问题,最终得到了 4 倍性能提升。不过此时出现了另一个问题,数据压缩率下降了,计算分区内的数据膨胀+倾斜虽然跑的慢,反而有着较高的压缩率。   ·Spark3 + Z-Order   为了解决压缩率的问题,我们增加了 Z-Order 优化,可以看到压缩率提升了 12 倍 ,对比 Spark2 时期的任务也有近 25% 的提升。而且由于 IO 下降,计算性能也没有因为多一次 Z-Order 变慢。从而实现同时治理任务性能,小文件以及数据压缩率的目标。   03
  Two-Phase Rebalance + Z-Order   3.1 方案介绍   前面我们提到过,动态分区场景下小文件和数据压缩率其实是互斥的,但是显然相比于在业务层面的优化,我们还是有很大的空间在引擎层面同时改善这两个痛点。我们提出了Two-Phase Rebalance + Z-Order,以压缩率优先的前提下尽可能减少小文件。   Two-Phase Rebalance   如上图,整个流程分由2阶段Rebalance + Z-Order 组成,第一阶段的 Rebalance 我们采用动态分区字段,目的是把文件数降到最低,但是此时压缩率是不高的,第二阶段的 Rebalance 采用动态分区字段 + Z-Order 字段,保证输出最大的压缩率,最后通过 Z-Order 完成分区内的排序。这里可能有同学会问,为什么第二阶段 Rebalance 不会产生小文件?这是由于AQE Shuffle Read 在拆分 Reduce 分区过程中继承了 Map 顺序性,也就是说 Redcue 分区拉取到的 Map 一定是连续的,而我们在第一阶段 Rebalance 后,连续的 Map 意味着他们拥有相同的分区值,所以我们可以实现尽可能的避免小文件产生。   3.2 案例分析   对比图   上图展示了一个任务从手动优化切换到 Z-Order 优化的效果,手动优化也是采用前面提到的DISTRIBUTE BY + SORT BY 结合取模的方式,当然手动优化前的任务更加惨不忍睹。Two-Phase Rebalance + Z-Order 优化后,压缩率相比手动优化提升近 13%,相比原始任务提升近 8 倍,文件数相比手动优化下降近 3 倍,相比原始任务下降近 14 倍。与此同时,任务计算性能也有近 15% 的提升。   04
  Two Phase Rebalance + Z-Order + Zstd   4.1 方案介绍   Two Phase Rebalance + Z-Order 已经满足了优化的需求,但是由于相比手动优化会多一次 Shuffle,导致任务过程中的 Shuffle 数据量会增加。这是临时数据,在任务结束后会自动清理,但如果我们本地磁盘冗余不够,也会出现存储空间不足的问题。因此我们引入了更高压缩率的算法 Zstd,在尽可能减少对任务性能影响的前提下减少 Shuffle 过程数据量。   4.2 案例分析   在具体案例中,两种压缩算法有一些区别,Zstd 相比于默认的 Lz4 节省近 60% Shuffle 数据,并且测试下来无明显性能影响,这是由于 IO 大幅度减少弥补了额外的 cpu 耗时。未来,我们的团队也会针对 Zstd 做更多的推广优化。   05
  小结   本文介绍了我们基于 Spark3 + Z-Order对于企业级离线数仓类任务的优化方案,初步解决了当前在迁移和在历史使用 Spark 的痛点。过程中也有一些体会和感悟:没有一种技术方案可以完美解决所有的问题,但我们也要尽力去找到那个需要妥协的点,而在此之前,优化空间是巨大的。   专家简介   尤夕多   网易数帆大数据离线技术专家,Apache Kyuubi PMC member,Apache Spark Contributor。   来源:微信公众号:网易有数   出处:https://mp.weixin.qq.com/s?__biz=MzIwNTUxNTI1Ng==&mid=2247489132&idx=1&sn=54a2767955d10ccb04bc420d3f55cd9d

家里什么条件,就提供给孩子什么样的生活,拔高养真的不可取你给孩子制造梦境,一片安宁祥和。可梦醒时分,世界就会露出它真实的模样。男孩要穷养,女孩要富养。这句话好似揭示了所有中国父母养儿育女的标准规则。而我觉得这话实在是有点摸不着边际的扯淡家里有孩子的,妈妈一定要学会这6道汤,秋冬常喝既长身体又补钙大家好,这里是小慧今天说美食,秋天是孩子长高的黄金时期,营养要跟得上,聪明的妈妈都会抓住这个时机,常给孩子喝这六道汤,让孩子个头在蹿一蹿,这六道汤秋冬常喝既长身体又补钙,做法简单零宅在家里就能把一个省份吃透,原来也不难朋友们,要说今年编辑部最心水的省份,福建绝对跻身前三。菜菜隔三差五就往那边跑,好酒店基本都住了个遍磊磊也是精神福建人,坐着高铁把厦门泉州沙县逛吃了一整圈。而我因为大学在泉州,本身就新疆,神之禾木媲美北欧同款雪景你不知道的新疆!它占据了960万平方公里的六分之一,比广袤无边的西藏还要大40多万平方公里。也正因如此,它装载了中国80的美景。它地处亚洲大陆的中心,是离海洋最远的地方,在清朝前,北京外援发威,拿下苏州取得两连胜!实力悬殊新疆轻取宁波上一轮刚刚战胜吉林队的北京在本轮CBA联赛中乘胜追击,又以95比82战胜苏州肯帝亚队,第一节开始后,苏州队由外援布莱克尼率先得分,但北京队很快做出回应,张才仁的抛投为球队扳平比分,现代诗(77)东方东方有一颗金太阳,红色传承初心不忘,中华儿女常把她久久仰望,九州大地,岁月激荡,民族历史盛世绵长。光明与希望,青春与梦想,燃烧了中国,虎跃龙腾在世界东方!东方有一轮圆月亮,思亲恩情边界感和分寸感很重要这个世界上,人与人之间的关系是最简单也最复杂,关系太近,怕有隔阂,太过疏远,怕会失去。其实最好的状态就是保持边界感和分寸感。如果距离太近,很有可能会让对方觉得窒息。如果毫无原则和底无论情人还是夫妻,当对方不主动联系你时,这么做才是有远见人在感情里,最怕的是痴心错付,把一腔真情和热忱,给了不值得的人开始时,对对方寄予的希望,所付出的努力和改变,最终都化为泡影,这种滋味非常难受,让人痛苦却也无奈在爱情里,一个人爱了就国乒签位出炉!马龙王楚钦约战张本智和,陈梦有望阻击伊藤美诚北京时间10月18日,乒乓球WTT冠军赛抽签结果正式出炉,其中马龙王楚钦当中的一人有望率先阻击张本智和,陈梦可能成为首位迎战伊藤美诚的国乒选手,而梁靖崑林高远第一轮就会碰头,真是刺家乡的枣儿红了昨日,亲戚从家乡过来,带来了一篮红艳艳的大红枣,一颗颗红玛瑙似的晶莹剔透,咬一口,又脆又甜。使我想起家乡门囗那颗红枣树。在那个物质匮乏的年代。门口树上的大红枣,是我童年不多得的美食遥远的另一个我一睁眼睛,来到了2017年1月1日,大三,我还在上大学。带着5年的记忆来到了过去,我想,从现在回到过去的人应该都会更认真地思考自己的人生吧。大三,我选择了考研,跨专业考现当代文学,沈知渝303欧篮联摩纳哥vs特拉维夫马卡比303欧篮联摩纳哥vs特拉维夫马卡比欧篮联的比赛已经进行了两轮,目前2战全胜的队伍有5个队,其中就有摩纳哥,另外四个队是费内巴切,巴斯克尼亚,奥林匹亚科斯和阿尔巴柏林。摩纳哥和去年120万年薪,加盟湾区翼龙队!刘传兴已经打了6场比赛,表现如何?202021赛季,刘传兴场均能够得到9。4分,8。1篮板,投篮命中率高达66。8。因个人出色的表现,他被选进了当赛季的CBA全明星阵容。可以说,当时的刘传兴,既是国内最有前途的新人MySQL集群搭建1,软件MySQL版本mysql5。7。29下载链接httpsdownloads。mysql。comarchivescommunity注建议使用迅雷下载,速度较快2,系统挂盘查看磁车仔面大叔体验极狐阿尔法S全新HI版自动驾驶2022年5月极狐阿尔法S全新HI版正式上市,新车分为进阶版和高阶版两个版本,进阶版售价39。79万元,高阶版售价42。99万元。极狐阿尔法S全新HI版由极狐与华为联手打造,也是全想在互联网上赚到钱,这四点必须掌握很多人认为,在互联网赚不到钱,是因为没天赋,没资源,运气也不好,实际不是的,只是你没有掌握正确的方法和思路。今天我把多年的互联网赚钱经验分享出来,希望能给你一点启发!想要在互联网赚乡土记忆之千年古镇渔洋对渔洋倾心已久。再闻渔洋,是在一个文化论坛读到关于渔洋的文章,颇为感叹。渔洋亦如一颗璀璨明珠,穿越数千年历史时空,熠熠生辉,愈发厚重。时光不羁,岁月匆匆。历史如此悠久,文化积淀如此两通一达顺丰德邦入选,上海发布快递服务制造业典型案例日前,上海多部门联合发布快递业与制造业融合发展典型案例,其中包括顺丰圆通中通韵达德邦等快递企业在内的15个案例入选。其中包括圆通助力大飞机翱翔蓝天德邦与服装行业融合中通快递服务米其上汽29亿入局,换电赛道开启持久战撰文凯旋编辑华锋近日,媒体报道上汽集团公告称,其子公司上汽集团金控管理拟合资设立合伙企业,出资总额15。51亿元,其中上汽金控为主要出资方,出资高达14亿,以投资新能源汽车充电换电倪萍,三婚嫁杨亚洲,在家也不做饭,如今她还好吗?一次,倪萍在化妆准备出去和朋友吃饭。电话突然响了起来,倪萍忙着化妆没有空去接电话。于是就对王文澜说你去接一下电话。王文澜说了一声好的,然后他看了一眼时间心想这个点谁会打电话来。想了支付宝史诗级更新,网友吐槽不如不更要说现在的互联网APP最大的特点是什么,黑马第一时间就想到了一个词孤岛。这是因为各大互联网巨头旗下的相关APP,除了自己旗下的产品之外基本都不怎么互通,一个二个都在试图圈地为王搞出多位主播坐镇虎牙饭堂,犀利点评S12各战队,并对后续进行预测随着英雄联盟S12世界赛小组赛第二轮结束,八强正式出炉,其中LCK赛区的T1DKDRX和GEN悉数晋级LPL赛区的EDGJDG和RNG携手出线,而2号种子TES则遗憾出局止步16强
足球城第二次失去万达,王健林这次已经仁至义尽了整整过去了二十四年之后,足球城大连再一次站到了十字路口上,未来的每一步该如何走,可能都事关着大连足球的生死存亡。北京时间昨天中午,大连市官方发布通告,宣布已经和一方万达和大连人俱乐法甲0大胜副班长止连败北京时间3月13日20点,法甲第28轮迎来一场焦点战,由巴黎圣日耳曼坐镇主场对阵排名垫底的波尔多。此前巴黎在欧冠中遭皇马逆转淘汰,回到联赛派上了全主力出战。上半场比赛,姆巴佩为球队巩汉林怒批男足丢脸,队长冯潇霆直接官宣退役,说要把位置让给他北京时间3月13日,由于此前小品和影视方面的艺术家巩汉林在采访过程当中谈到了中国足球男足球员现在的收入问题,并且说出现在的男足球员就是给中国人丢脸这样的话。这一度引起了足球圈和巩汉双赢!76人火箭4人互换,戈登再联手哈登,伍德助力恩比德哈登加盟76人之后,76人展现非常出色的竞技状态与实力,他们也一跃成为本赛季的夺冠大热门之一,恩比德与哈登的超级双人组极具竞争力。但是他们主场惨败篮网之后,球队的问题就暴露出来,一广东队都遭屠杀26分了,闫军欺人太甚,技犯吹掉任骏飞广东队依然落后对手15分,决战局阿联传球给二飞,后者完成了开局的上篮。威姆斯反击没有打成,不过阿联在篮下完成轻松上篮,郭士强赶紧喊出暂停。他见势不妙就敏锐地将对方势头给打乱了,那么为什么沧海一声笑会成为经典歌曲?沧海一声笑是1990年上映的电影笑傲江湖的主题曲,由黄霑作词作曲,顾嘉辉编曲。一创作背景1990年,黄霑受命为徐克的电影笑傲江湖谱曲,写了六稿,徐克都不满意,无奈之中,随意翻阅古书时装周2022年LouisVuitton秋冬系列LouisVuitton2022年秋冬系列致敬着青春,将浪漫情怀结合理想主义,表达着对美好世界的希冀。艺术总监NicolasGhesquire将LV2022秋冬秀场设置在巴黎奥赛博中国面霜的黑名单曝光了,大牌都上榜了,这几个小众面霜反而出圈现在面霜的品牌越来越多了特别是大牌的一瓶都大几千了咱们老百姓是真心的承受不了用来用去还是这些小众的面霜贴心,性价比高,又好用自从我跟着李佳琦买诗丽缤纷玫瑰面霜之后熬夜也不担心垮脸了一件西装100种穿搭!初春这样穿,巨时髦西装也是我春秋最喜欢的单品之一了,平时私服和出席活动都会穿。最近各大时装周神仙打架,西装作为经典单品,出现率也是相当高。SaintLaurentFall2022大秀Gucci202有这2种特质的女性,肌肤会越来越通透,不用化妆反而更美虽然爱美是很多女性孜孜不倦的努力方向,但是良好的皮肤状况却并没有这么容易修炼和养成。若是不注意一些日常生活细节和行为方式的控制,反而会导致自己的皮肤变得愈来愈差愈来愈老。每当看到镜刘亦菲罕见坐高铁,穿黑色大衣睡觉,侧颜高鼻梁支撑起口罩太优越气温在稳步上升当中,但是这个季节在穿搭方面,外套依旧少不了,毕竟季节变化实在是太大,忽冷忽热,如果觉得太厚的衣品外套觉得过于闷热的话,大可以选择单薄的外套,既能达到穿衣时尚的效果,