使用部分写时复制提升Lakehouse的 ACID Upserts性能
译自:Fast Copy-On-Write within Apache Parquet for Data Lakehouse ACID Upserts
(资料图)
术语copy-on-write:写时复制merge-on-write:读时合并概述传统的写时复制会直接读取并处理(解压解码等)整个文件,然后更新相关数据页并保存为新的文件,但大部分场景下,upsert并不会更新所有数据页,这就导致其做了很多无用功。
文章中引入了一种新的写时复制,它会创建指向Apache Parquet文件的数据页的索引,并跳过不相关的数据页(不会对这部分数据进行解压解码等操作),以此来加速数据的处理。
随着存储表格式的发展,越来越多的公司正在基于Apache Hudi、Apache Iceberg和Delta Lake等工具来构建lakehouse,以满足多种使用场景,如增量处理。但随着数据卷的增加,upsert的运行速度可能会带来一定的影响。
在各种存储表中,Apache Parquet是其中最主要的文件格式。下面我们将讨论如何通过构建二级索引并对Apache Parquet进行一些创新来提升在Parquet文件中upsert数据的速度。我们还会通过性能测试来展示相较传统的Delta Lake和Hudi写时复制的速度(提升3x~20x倍)。
起因高效的 ACID upsert 对于今天的lakehouse至关重要,一些重要的使用场景,如数据保存和Change Data Capture (CDC)严重依赖ACID upsert。虽然 Apache Hudi, Apache Iceberg 和 Delta Lake中已经大规模采用了upsert,但随着数据卷的增加,其运行速度也在降低(特别是写时复制模式)。有时较慢的upsert会成为消耗时间和资源的点,甚至会阻塞任务的执行。
为了提升upsert的速度,我们在具有行级索引的Apache Parquet文件中引入了部分写时复制,以此来跳过那些不必要的数据页(Apache Parquet中的最小存储单元)。术语"部分"指文件中与upsert相关的数据页。一般场景中只需要更新一小部分文件,而大部分数据页都可以被跳过。通过观察,发现相比Delta Lake和Hudi的传统写时复制,这种方式提升了3~20倍的速度。
Lakehouse中的写时复制本文中我们使用Apache Hudi作为例子,但同样适用于Delta Lake和Apache Iceberg。Apache Hudi支持两种类型的upserts操作:写时复制和读时合并。通过写时复制,所有具有更新范围内记录的文件都将被重写为新文件,然后创建包含新文件的新snapshot元数据。相比之下,读时合并会创建增量更新文件,并由读取器(reader)进行合并。
下图给出了一个数据表更新单个字段的例子。从逻辑的角度看,对User ID1的email字段进行了更新,其他字段都没变。从物理角度看,表数据存储在磁盘中的单独文件中,大多数情况下,这些文件会基于时间或其他分区机制进行分组(分区)。Apache Hudi使用索引系统在每个分区中定位所需的文件,然后再完整地进行读取,更新内存中的email字段,最后写入磁盘并形成新的文件。下图中红色的部分表示重写产生的新文件。
图1:表upsert的逻辑和物理文件视角
使用Apache Hudi构建大型事务数据湖一文中提到,一些表更新可能会涉及到90%的文件,进而导致重写数据湖中的特定大型表中约100TB的数据。因此写时复制对于很多使用场景至关重要。较慢的写时复制不仅会导致任务运行时间变长,还会消耗更多的计算资源。在一些使用场景中可以观察到使用了相当数量的vCore,等同于花费了上百万美元。
引入行级别的二级索引在讨论如何在Apache 中提升写时复制之前,我们打算引入Parquet 行级别的二级索引,用于帮助在Parquet中定位数据页,进而提升写时复制。
当首次写入一个Parquet文件或通过离线读取Parquet文件时会构建行级别的二级索引,它会将record
映射为[file, row-id]
,而不是[file]
。例如,可以使用RECORD_ID
作为索引key,FILE
和Row_IDs
分别指向文件和每个文件的偏移量。
图2:Apache Parquet中行级别的索引
在Apache Parquet内部,数据被分为多个row groups。每个row group由一个或多个column chunks构成(column chunk对应数据集中的一列),然后每个column chunk 会被写成数据页格式。一个block包含多个页,它是访问单个record前必须读取的最小单元。在页内部,除了编码的目录页,每个字段都追加了值、重复级别和定义级别。
如上图所示,每个索引都指向页中record所在的行。使用行级别的索引时,当接收到更新时,我们不仅仅可以快速定位哪个文件,还可以定位需要更新的数据页。使用这种方式可以帮助我们跳过不需要更新的页,并节省大量计算资源,加速写时复制的过程。
Apache Parquet中的写时复制我们在Apache Parquet中引入了一种新的写时复制方式来加速lakehouse的upserts。我们只对Parquet文件中相关的数据页执行写时复制更新,而对于无关的页,只是将其复制为字节缓存而没有做任何更改。这减少了在更新操作期间需要更新的数据量,并提高了性能。
图3:Apache Hudi传统写时复制和新写时复制的比较
上面展示了新的写时复制和传统的写时复制的处理过程。在传统的Apache Hudi upsert中,Hudi会使用record 索引 来定位需要修改的文件,然后一个record一个record地将文件读取到内存中,然后查找需要修改的record。在应用变更之后,它会将数据写入一个全新的文件中。在读取-修改-写入的过程中,会产生消耗大量CPU周期和内存的任务(如压缩/解压缩,编码/解码,组装/拆分record等)。
为了处理所需的时间和资源消耗,我们使用行级别的索引和Parquet元数据来定位需要修改的页,对于不在修改范围的页,只需要将其作为字节缓存拷贝到新文件即可,无需压缩/解压缩,编码/解码,组装/拆分record等。我们将该过程称为"拷贝&更新"。下图描述了更多细节:
图4:Parquet文件中的新写时复制
性能测试我们使用传统的TPC-DS 数据方式测试比较了新的写时复制的性能。
我们采用具有相同vCore数量的TPC-DS销售数据和Spark作业的内存设置,并用开箱即用的配置进行了测试。我们对5%~50%的数据进行了更新,然后比较Delta Lake和新的写时复制所花费的时间。对于真实的使用场景来说,50%的数据更新已经足够了。
测试结果表明,新方法的更新速度更快。不同百分比数据的更新场景下都能保证其性能优势。
总结总之,高效的ACID upserts对今天的lakehouse至关重要。随着Apache Hudi, Delta Lake 和 Apache Iceberg 的广泛采纳,upserts的慢操作也面临挑战,特别是在数据卷不断扩展的情况下。为了解决这个问题,我们在具有行级索引的Apache Parquet文件中引入了部分写时复制,以此来跳过对不需要的数据页的读写。在性能测试中展现了明显的性能优势。该方法使公司能够高效地执行数据删除和CDC,并适用于其他依赖于lakehouse中高效表更新的场景。
标签:
相关阅读
精彩推荐
阅读排行
相关词
- 【新要闻】湘乡市贴吧 湘乡论坛
- 东方雨虹瓦屋面维修系统,为梅雨季安居护航
- 速看:年仅40岁《超越善恶2》创意总监英年早逝
- 江苏2023年养老金调整方案最新方案公布时,会继续保持三降一不变吗?谁涨得多?-环球讯息
- 【热闻】2023年最新上海养老金调整方案即将公布?退休人员最高涨幅能超过400元么?测算看看
- 【天天时快讯】国际歌坛上的华人之光丨歌手李玟去世,年仅48岁
- 全球观速讯丨CPO概念强势拉升,华工科技一度涨停,光库科技等大涨
- 融汇湖城一品建面约116㎡阔景四房 隔着屏幕就能闻到阳光的味道-天天新资讯
- 《热血物语SP》Steam页面上线 10月11日发售 观天下
- 《地下城与勇士:决斗》发布新角色"刃影"试玩实机视频 焦点快播
- 全球速递!水发兴业珠海智能连续中标多个分布式光伏项目
- 全国男子篮球联赛:陕西主场胜江苏
- 尼古拉斯凯奇将于7月25日加入《黎明杀机》!_环球看热讯
- 《塞尔达传说:王国之泪》发布1.20版本更新!
- 百变大侦探筝瑟惊晚春凶手是谁 筝瑟惊晚春剧本答案真相解析[多图]
- 荷兰国际管家为贵阳铁建城黑钻带来超越期望的服务 每日热讯
- 《碧蓝档案》分级引不满 评级机构被曝挪用公款
- 今日热闻!网易宣布《永劫无间》将从7月14日起转为免费 完整版需付费升级
- 1399元起!荣耀X50手机发布:搭载骁龙6 Gen 1、整机十面抗摔
- 任天堂Switch继任主机代号或泄露:“NX2”
- 全球讯息:上海黄金交易所黄金T+D 7月6日(周四)早盘盘初下跌0.03%报450.21元/克
- 丁磊:用最快的速度探索AI大模型的创新应用,是网易的首要任务-环球热消息
- 当前简讯:全国系列优秀文创产品集中亮相泰安!第二届全国文化出版领域文创产品交易博览会开幕
- 全球微头条丨如何辨别人造鸡蛋(辨别人造鸡蛋的方法)
- 推动中国制造抵达更多“极点”
- 湖南绥宁:民族节庆大显活力 独家焦点
- 弘扬农耕文化 传承乡村技艺
- 微软爆料PS5 Slim新主机售价后:索粉玩家上演吐槽
- 【天天播资讯】《完美音浪》5号免费更新正式上线 添加两个新模式
- wow暗水鳐鱼怎么获得?wow新鲜的夜鳞鲷鱼在哪里钓?
- 历届欧冠冠军得主(冠军盘点)
- 二手车进入内容和车源双运营时代 全球快看点
- 环球新消息丨西秦刺绣“绣”出和美乡村
- 快看:今日看点 | 美财政部部长耶伦访华;2023世界人工智能大会开幕
- 《街霸6》发布角色“拉希德”宣传视频 将于7月24日正式上线-看热讯
- 牧原股份:6月份销售生猪531.4万头,收入86.89亿元 通讯
- 云顶之奕更新了什么
- 7月6日菏泽焦炭市场价格暂稳
- 移情于物和托物言志的区别(移情于物)-世界信息
- 荣誉+10! 中国联通多项创新成果再获业界认可-世界快消息
- 尼古拉斯凯奇将于7月25日加入《黎明杀机》 全球快播报
- 超40℃!北京再发高温红色预警
- 洛克王国小蜂猴如何获得?洛克王国小火猴厉害吗?
- 幻塔白鲸岛怎么上去?幻塔为什么调不了时间?
- 办好“关键小事”,提升物业服务|全球最新
- 魔兽世界永恒之眼钥匙如何获得?魔兽世界黑翼血环怎么去?
- 移动硬盘隐藏分区恢复方法-当前快讯
- 【世界时快讯】我国植被生态质量整体较好
- 全球速递!毕业旅行成暑期游热门
- 微速讯:加载kernelbase.dll总出错怎么办
- 1天看遍美景!西宁至茶卡“天空之镜”旅游列车开行-天天热讯
- 天天酷跑狼女贝蒂如何搭配?天天酷跑所有角色介绍
- 当前速看:暑假,让孩子们动起来
- 环球快资讯:松下投影仪蓝屏怎么解决
- 每日快报!《八角笼中》成中国影史点映总票房冠军
- 生化危机6存档方法是什么?生化危机6不能存档怎么办?
- 剑网3英雄三才阵如何打?剑网3比较好做的成就是什么?
- 马斯克在世界人工智能大会发言:中国一定能做好AI产业
- 妄想山海怎么捕捉宠物?妄想山海为什么没人养鲲?
- 每日时讯!马斯克:相信中国会有很强的人工智能能力
- 西藏:体育强区建设跑出“加速度” 全球快消息
- 环球看热讯:企业订单排到下个月!海南省住建厅推动装配式建筑产业高质量发展
- dnf剑豪武器怎么选择?dnf剑豪加点推荐
- 【全球播资讯】魔霸新锐蓝屏nvlddmkm.sys怎么办
- 20万级插混SUV怎么选?全新皓影e:PHEV对比唐DM-i 全球热讯
- 深蓝汽车全新品牌战略发布 新能源新车型深蓝S7开启交付
- 骑电动车、摩托车注意,济南正严查 世界百事通
- 2023年养老金补发时间敲定,养老金调整怎么计算? 全球聚看点
- 电脑提示缺少apexframework_x86_vc15.dll文件怎么解决?
- 梦幻西游暗影龙怎么打?梦幻西游暗影龙任务怎么领取?
- 逆水寒手游平天门答案大全 平天门正确答案汇总
- 微资讯!河北河间:点亮城市“夜经济” 激发消费活力
- 深蓝提出“智能平权”,携手大陆、地平线加速智能跃迁
- 车险费改后怎么买划算?车险费改什么时候开始的?
- 世界通讯!阿斯巴甜致癌?世卫组织:7月14日将回应
- 投影仪蓝屏无信号怎么办-环球通讯
- 每日快看:2023年6月份山西省市场监管类投诉举报咨询数据分析暨消费提示
- 【全球聚看点】微软 PowerToys 0.71 更新:Peek 可预览压缩文件内容等
- 旅游 | 巅峰对决!湖北导游一决高下尽展风采|热点
- 中信建投:创新药医保支付趋势更加明确 看好创新药板块及头部公司
- 深圳万妮拉科技有限公司销售备案已被取消的化妆品案-动态
- 当前速看:夏文化专刊 | 专家声音:让世界人民了解辉煌灿烂的夏王朝
- 高能英雄什么时候上线 高能英雄上线时间介绍 世界实时
- 公主的时尚装扮好玩吗 公主的时尚装扮玩法简介 每日观察
- 焦点讯息:潜渊症第二次精神蜕变是什么
- 热点评!深圳市龙成电动车有限公司销售抽检不符合强制性标准要求的电动自行车产品案
- 世界滚动:豪杰成长计划怎么娶公主 豪杰成长计划娶公主方法
- 2023LPL夏季赛7月6日赛事预告海报比拼:TT vs iG 全球通讯
- 什么是意外险?企业意外险包括哪些范围?
- 热点在线丨像素街机游戏《热血物语SP》上线Steam 预计10月11日发售
- 环球快资讯:江苏:举办“百场万企”汽车产业对接大会
- 天天速看:电影《封神第一部》发布“质子出征”版预告片 年轻质子直面成长考验
- 焦点快看:@毕业生,从求职到入职,这份避坑指南请收好
- 技术支撑 安全护航 10大关键词绘就大数据发展新蓝图 天天速看料
- 2023LPL夏季赛7月6日赛事预告海报比拼:RA vs WE
- 最资讯丨山西:出台工业领域碳达峰实施方案
- 6月份电商物流指数公布 连续六个月环比回升-全球速看
- 积极融入数字社会 我国多措并举推动“智享养老”
- 充分释放农村地区新能源汽车巨大消费潜力-关注
- 2023LPL夏季赛7月6日赛事预告海报比拼:LNG vs AL-天天日报
- 每日热议!邬贺铨:建议开放国家算力平台支持各类大模型训练
- 天天快讯:《大河》新书首发:用“山河小说”崭新形式实现红色经典再造
- 天天速递!全球发展倡议提出1年多来—— 为全球共同发展增添新动能(环球热点)
- 名单公布,安徽这位戏曲演员入选-世界消息
- 中东面面观丨沙特两位重量级大臣接连到访中国,所为何事?
- 野水荒滩“古雷池” 秀美安澜新高地 环球速讯
- 当前速看:歌手李玟去世,年仅48岁
- 6月份电商物流指数公布 连续六个月环比回升
- 全国疾控电话流调专用号码启用 全球微速讯
- 环球速讯:多项经济指标回升 我国经济向好发展态势明显
- 百变大侦探大理寺追凶日记答案大全 大理寺追凶日记剧本凶手真相推荐
- 键盘A键失灵是怎么回事?键盘全部失灵按哪个键?
- 金士顿序列号如何查询?金士顿内存条序列号在哪看?
- 甘肃上线医保智能处方系统
- win10插usb转串口蓝屏怎么办
- 四川提出紧急医学救援三年规划
- 《雪地奔驰》第十季 修理 & 连接将于7月18日推出。欣赏一系列令人兴奋的新截图 全球聚焦
- 世界即时看!如何解决索尼投影仪蓝屏
- 头条:如何解决绝地求生蓝屏死机
- lum_sdk32.dll文件丢失如何重新安装?
- 基金投资策略有哪几种?长期投资策略有哪些?
- 世界热资讯!暑期毕业旅游市场持续升温
- 新基金前三个月有没有收益?新基金都会有封闭期吗?
- 全球简讯:欧美车企加大在新兴市场投资力度
- 世界观热点:借销售周杰伦演唱会门票诈骗!海南一“黄牛”被刑拘!有多人中招……
- “跨”越万里的中非经贸之“链”
- 造梦无双神兽森林都有什么宠物
- 百变大侦探筝瑟惊晚春凶手是谁 筝瑟惊晚春剧本答案真相解析
- 每日焦点!“离岛免税”提振消费信心
- 热点!打出王炸牌 点亮夜西安
- 新能源二手车论坛在蓉共商破局之策
- 《模拟城市:我是市长》在开元古都体验古代工业
- 九龙坡打造重庆国际啤酒文化新IP
- 如何看基金最大回撤?基金回撤最大能有多少?
- 强降雨来袭!重庆移动全力救灾保通信(附图片) 世界快消息
- 工信部:国家级先进制造业集群产值超20万亿元|每日消息
- 世界观察:大模型在工业领域探索仍处于初级阶段
- 股票一级市场和二级市场是什么?初级市场和二级市场的区别有哪些?
- 机构数据:ChatGPT流量首次下滑
- 1至5月销量前十车企总销量超880万辆-快看
- 高精度 大规模“AI+超算”助力庞大系统的精确模拟
- 今头条!北京发布高温红色预警信号 大部最高温将达40℃以上
- 医保卡要去银行办理吗?医保卡丢了需要挂失吗?
- 生育险补齐后可以报销吗?生育险生产后多久可以报销?
- 微动态丨中暑患者增加 120呼叫量明显上升
- 逆水寒手游龙门客栈怎么拜入-今日热闻
- 天天消息!逆水寒手游披心相付要多少友好度
- 灿勤科技(688182)7月5日主力资金净买入74.94万元 天天视点
- 购买伽途ix7前必看,车主是这样评价伽途ix7的-世界实时
- 2023第八届大致坡琼剧文化节“琼剧我来唱”首场活动举办_环球快看点