新一代数据湖技术: Upsert深度解析
版权申诉
54 浏览量
更新于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 上传
5685 浏览量
1504 浏览量
706 浏览量
智慧化智能化数字化方案
- 粉丝: 593
- 资源: 1万+
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案