新一代数据湖技术: Upsert深度解析
版权申诉
38 浏览量
更新于2024-07-06
收藏 1.48MB PDF 举报
"数据湖分析之Upsert详解.pdf"
在数据湖分析中,Upsert是一种重要的操作,它解决了传统数仓在数据入库时面临的诸多痛点。传统的数据仓库(数仓)常常采用T+1方案,这意味着数据处理存在较大的延迟,并且在全量扫描源库时会增加源库的压力,浪费计算和存储资源。此外,源库的结构变化无法同步到数仓,限制了系统的灵活性。
为了改善这种情况,一些改进的方案如使用CDC(Change Data Capture)将数据导入到Kafka,然后再导入到HBase或Kudu。然而,这种方式虽然减少了全量扫描,但仍然需要多个组件协同工作,部署和维护复杂,且仍然无法妥善处理Schema的变化。
腾讯大数据TDW入库策略,如TDBANK,采用了消息分拣层处理消息并落地为HDFS文件,然后通过Hive任务定时入库。这种方案的延迟取决于定时任务和Hive作业的执行,且无法应对延迟到达的数据,可能导致数据丢失。
新一代的数据湖技术引入了Upsert和UpsertSink,旨在提供更高效和灵活的数据管理。Upsert技术具备ACID特性和快照能力,实现了读写分离,使得数据落地后即可立即使用,同时保留了历史信息的追溯。通过行级别的更新(Row-level update),它可以处理CDC增量更新,并能修正延迟到达的数据。另外,Table Evolution特性使得文件组织方式更加灵活,不再依赖目录分区,支持列的动态增删改。
Upsert操作的核心在于根据源表数据对目标表进行插入、删除和更新的合并操作。其SQL语法示例如下:
```sql
MERGE INTO [db_name.]target_table [AS target_alias]
USING [db_name.]source_table [AS source_alias]
ON <merge_condition>
[WHEN MATCHED [AND <condition>] THEN <matched_action>]
[WHEN MATCHED [AND <condition>] THEN <matched_action>]
[WHEN NOT MATCHED [AND <condition>] THEN <not_matched_action>]
```
在这个语句中,`ON <merge_condition>`定义了匹配条件,`WHEN MATCHED`处理匹配的行,可以进行更新或删除操作,而`WHEN NOT MATCHED`则处理未匹配的行,通常用于插入新数据。这种操作模式极大地提高了数据湖处理的效率和准确性,使得数据湖分析能够更好地适应快速变化的数据环境和业务需求。
2021-10-19 上传
2021-10-19 上传
2023-12-22 上传
2023-07-14 上传
2023-06-06 上传
2023-11-07 上传
2023-08-10 上传
2023-07-30 上传
2023-06-22 上传
智慧化智能化数字化方案
- 粉丝: 584
- 资源: 1万+
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析