




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024德阳城市轨道交通职业学院辅导员招聘笔试真题
- 法律文书校对员考试试卷及答案
- 法律风险评估员考试试卷及答案
- 食品感官分析师笔试试题及答案
- 2025年精密陶瓷劈刀项目建议书
- 2025年教师编制考试教育学基础知识必会题库完整版【答案】
- 2025年厦门市湖里生态环境局辅助岗位人员招聘考试笔试试题【答案】
- 2025年电子计步器实验分析仪器项目发展计划
- 湘艺版二年级下册教案第四课 箫
- 2025年上半年公司网管述职报告范文
- 2025年新修订《治安管理处罚法》
- 管道非开挖修复技术课件
- 铁路营业线安全管理办法
- 酒类销售用人劳务合同
- 2024年吉林省省直事业单位招聘考试真题
- 2025老年教育政策环境分析及教学模式创新路径研究报告
- 2025年湖南省高考历史真题(答案版)
- 2025年中国伺服电缆行业市场发展前景及发展趋势与投资战略研究报告
- 【大数跨境】全球移动电源市场洞察报告
- 酒店安全奖惩规定
- 配电室运行维护投标方案(技术标)
评论
0/150
提交评论