版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据湖分析之Upsert功能详解技术创新,变革未来 目录传统数仓入库痛点新一代数据湖技术下一步展望 传统数仓数据入库痛点典型场景:业务数据(SQL/NoSQL)全量入库典型T+1方案,数据延迟大全量扫瞄源库,给源库造成压力,同时浪费计算和存储资源。例如使用Sqoop限制:源库信息变更不能同步到数仓,例如:Schema变换 传统数仓数据入库痛点改进的场景:CDC导入到Kafka再导入到HBase, KuduHBase, Kudu无法存储全量数据,需要再次导入到Hive库分析整个流程需要多个组件联动,部署复杂限制:仍然无法解决数据Schema变动情况 腾讯大数据TDW入库腾讯大数据场景:TDBAN
2、K入库消息分拣层分拣消息落地成HDFS文件,定时启动Hive任务进行入库操作数据延迟依赖于定时任务,以及Hive入库Job运行情况无法处理延迟到达数据,延迟到达数据重新入库导致数据丢失 新一代数据湖技术 全新的数据入湖方式CDC 新一代数据湖Upsert技术优势ACID & Snapshot读写分离,数据落地即可用历史信息可追溯Row-level updateCDC增量更新延迟数据修正Table Evolution文件组织方式更灵 活,不再依赖目录 分区支持列增删改 Upsert操作简介Upsert是根据一张源表数据,对目标表的数据进行插入、删除和更新。它的典型SQL语法入下所示:MERGE
3、INTO db_name.target_table AS target_alias USING db_name.source_table AS source_alias ON WHEN MATCHED AND THEN WHEN MATCHED AND THEN WHEN NOT MATCHED AND THEN 其中 = DELETE |UPDATE SET * |UPDATE SET column1 = value1 , column2 = value2 . = INSERT * |INSERT (column1 , column2 .) VALUES (value1 , value2 .
4、) Upsert用例:GDPR数据删除GDPR是欧洲的一个关于用户隐私的法案,简单讲就是用户可以选择被忘记的权力,违规者最高会被罚两千万欧元或者4%的营收。MERGE INTO usersUSING users_to_deleteON users_to_delete.userId = users.userIdWHEN MATCHED THEN DELETE Upsert用例:写入CDC数据MERGE INTO users USING (SELECT userId, latest.address AS address, latest.deleted AS deleted FROM (SELECT
5、 userId, MAX(struct(TIME, address, deleted) AS latest FROM changes GROUP BY userId ) ) latestChangeON latestChange.userId = users.userIdWHEN MATCHED AND latestChange.deleted = TRUE THEN DELETE WHEN MATCHED THEN UPDATE SET address = latestChange.addressWHEN NOT MATCHED AND latestChange.deleted = FALS
6、E THEN INSERT (userId, address) VALUES (userId,address) Upsert API使用def upsert(table: Table, microBatchOutputDF: DataFrame, batchId: Long) table.as(t).merge( microBatchOutputDF.as(s), s.key = t.key).whenMatched().updateAll().whenNotMatched().insertAll().execute()readStream.format(“iceberg/delta”).fo
7、reachBatch(upsert _).outputMode(update).start() Upsert基本原理Upsert是一组Update + Delete + Insert 操作的集合,这个操作集以事务方式提 交给表,它的典型实现方式有两种:Copy On Write和Merge on Read.Copy On Write数据读出到内存,进行行更新后替换原来文件优点是后续读快,且不产生小文件Merge On Read相关更新记录落地成Delta文件,读时进行合并写速度快,会产生小文件问题 Delta Lake UpsertDelta Lake的Upsert实现是Copy On Wri
8、te模式,它使用Spark API 进行一系列操作 生成最终Dataset并进行Overwrite操作。分析Dataset数据,找 出需要更新的分区根据Merge条件构 造目标表DatasetJoin 目标表和源表,根 据条件更新列值,删除 行,或插入值保存Dataset到一 个staging目录以事务方式提交,进行OverwriteRecords to insertRecords to update Records to deleteMerge Into partition1 partition2partition4partition3 Apache Hudi UpsertHudi抽象了Me
9、rge on Read表和Copy On Write表,用户可以根据读写延迟需求 选择任意一种表进行Upsert.Copy On Write表的Upsert Apache Hudi UpsertMerge On Read表的Upsert Apache Iceberg UpsertIceberg和Delta Lake,Hudi不一样,它提供了一套基于Data File的事务操作接口,方便 进行包装实现Copy On Write。目前有两种实现方式:第一种:将Upsert拆成三个操作, delete, update, insert合并成一个事务提交val txn = table.newTransa
10、ction() txn.newDelete.deleteFiles(FilesToDelete).commit() txn.newAppend.appendFiles(filesToAppend).commit() mitTransaction()第二种:将目标表和源表进行join, 然后在内存 根据Match条件进行操作并生成文件,再通过事 务提交delete和insert操作。 Apache Iceberg UpsertIceberg Upsert 的Merge on Read实现和Hudi的Merge on Read比较类似,它定义了两种 Delta文件,基于位置的Position Delete和基于表达式的Equality Delete。同时定义了 Base File和Delta File的序号来标识先后顺序以便进行合并操作。 Upsert 相关优化Copy on write和Merge on Read方式都需要一些优化,例如添加索引支持,这 样可以快速定位需要修改记录所在分区和文件。当然还有一些优化如下:Copy on Write过滤条件尽量写足,避免无意义的写放大Merge on ReadMinor: Delete文件转化
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州市天河区同仁艺体实验中学招聘教师模拟笔试试题及答案解析
- 2025中国国家地理科考旅行部实习生招聘备考笔试试题及答案解析
- 2025山东临沂市河东区教育和体育局部分学校引进紧缺学科教师34人参考笔试题库及答案解析
- 2025云南临沧市临翔区委员会政策研究室城镇公益性岗位人员招聘1人模拟笔试试题及答案解析
- 2025福建闽江学院附属中学招聘供餐专职管理员1人备考笔试题库及答案解析
- 2025新疆阿瓦提县招聘警务辅助人员120人参考笔试题库及答案解析
- 2025广西来宾市合山生态环境局招聘1人备考笔试试题及答案解析
- 2025四川九州光电子技术有限公司招聘行政管理岗拟录用人员笔试历年参考题库附带答案详解
- 2025中意宁波生态园控股集团有限公司第二次招聘拟录用人员及后备人才(浙江)笔试历年参考题库附带答案详解
- 元宝山区2023内蒙古赤峰元宝山区定向选聘社区党组织书记为事业编制人员2人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 股东会清算协议书
- 2025大理州强制隔离戒毒所招聘辅警(5人)笔试考试备考题库及答案解析
- 2025年安全培训计划表
- 2026年榆林职业技术学院单招职业技能测试题库参考答案详解
- 2025年沈阳华晨专用车有限公司公开招聘笔试历年参考题库附带答案详解
- 2026(苏教版)数学五上期末复习大全(知识梳理+易错题+压轴题+模拟卷)
- 垃圾中转站机械设备日常维护操作指南
- 单证主管助理客户服务能力提升方案
- 汽车行业可信数据空间方案
- 畜牧业机械化培训课件
- 工程质量管理工作制度
评论
0/150
提交评论