版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44745-2024粮油机械移动式散粮出仓机
- 江苏省南京市2024-2025学年高二上学期期中考试 数学 含解析
- 浅谈初中历史作业错题的归纳和利用方法
- 《广东省常规跨径公路钢桥安装标准化指南(2024版)》
- 《新闻学基础》题集
- 市小型农田水利项目可行性研究报告
- 2025新译林版英语七年级下Unit 3 My hometown单词表
- 《培养良好书写习惯》主题班会教案3篇
- 部编小学语文三下二单元(《守株待兔》《陶罐和铁罐》《鹿角和鹿腿》《池子与河流》)大单元学习任务群教学设计
- 2024年营林及木竹采伐机械项目资金申请报告代可行性研究报告
- 新人教版八年级物理上册期中考试及答案【可打印】
- 绿色钢铁产业链构建
- 2024年企业股东退股补偿协议版
- 河南省商丘市2023-2024学年高一上学期期中考试化学试题(含答案)
- V带传动设计说明书
- 墓地长期租用合同模板
- 培训员工的课件
- 2025年九省联考新高考 数学试卷(含答案解析)
- 2024秋期国家开放大学《公共行政学》一平台在线形考(形考任务一至三)试题及答案
- (中图版)地理八年级知识总结
- 职校开学第一课课件:谁说职业没前途
评论
0/150
提交评论