数据入湖入仓问题分析笔记

📅 2026/7/18 21:03:04
数据入湖入仓问题分析笔记
数据入湖入仓问题分析笔记一、现有技术栈核心问题分析1.1 架构现状核心技术栈Hive传统数仓为主体无原生数据湖能力数据量级PB级海量数据存储成本高度敏感数据类型结构化、半结构化、非结构化数据并存同步方式全量同步为主存在新增、日常更新、大批量变更场景业务场景离线分析为主、部分实时统计、AI建模实验核心诉求支持任意时间点数据快照回溯、统一查询引擎1.2 现存技术痛点Hive无ACID事务不支持UPDATE/DELETE数据更新仅能全量重刷资源损耗极大无原生快照回溯能力无法支撑对账、故障恢复、业务审计溯源强写死Schema不兼容日志、JSON、附件等非结构化数据AI建模存在中转冗余无冷热分层机制PB级数据长期高价存储成本居高不下流批架构割裂离线、实时两套存储无统一查询与存储底座二、数据入湖入仓核心概念2.1 数据入仓Hive数仓架构模式ETL模式先清洗、后入库核心特征写时Schema校验、结构固定、约束严格、口径统一适配数据纯结构化标准化业务数据核心短板无增量更新、无版本快照、多类型数据兼容差、存储成本高2.2 数据入湖Hudi/Iceberg架构模式ELT模式先落盘、后清洗核心特征读时Schema解析、支持Schema演进、ACID事务、Upsert更新、TimeTravel回溯、冷热分层适配数据结构化、半结构化、非结构化全类型数据核心优势适配PB级数据、CDC增量、大批量更新、AI样本存储、低成本归档三、入湖入仓适用场景及业务案例3.1 数据入湖适用场景多源原始数据归档业务全量、CDC增量、埋点日志、系统日志、图片附件原始落湖高频大批量更新订单状态、库存、余额等频繁变更、批量更新业务表数据回溯审计财务月末对账、数据故障恢复、业务操作溯源AI建模场景算法特征工程、模型训练直接读取原始明细数据海量冷数据归档多年历史明细数据冷热分层压缩存储成本实时数据计算低延迟同步、实时大屏支撑部分实时业务诉求3.2 数据入仓适用场景标准化T1离线报表日常经营统计、部门BI看板、固定维度聚合指标核心合规指标财务、营收、交易、成本高精度指标强治理、口径统一高频聚合查询多表关联、维度汇总宽表适配高频BI查询场景四、入湖入仓整体落地流程4.1 整体架构链路多源数据源 → 全量/CDC数据同步 → 原始数据入湖 → 湖内清洗加工 → 聚合数据入仓 → 统一引擎对外服务4.2 流程拓扑图plaintext 数据源MySQL/Oracle/日志文件/业务附件 ↓ 同步层DataX全量初始化、Flink CDC增量监听 ↓ 数据湖ODS层Hudi/Iceberg 原始落盘、快照留存、冷热分层 ↓ 加工层Spark/Flink 清洗、去重、增量合并、维度补全 ↓ 分支1湖能力实时大屏、AI建模、数据回溯、明细查询 分支2仓能力聚合汇总 → Hive DWM/DWS 入仓固化 ↓ 统一查询Trino/Presto 同时兼容湖表、仓表查询 ↓ 业务应用BI报表、算法平台、数据对账、审计回溯4.3 分层流程说明ODS原始层所有原始数据统一入湖保留完整原貌开启版本快照DWD明细层湖内完成清洗、增量合并替代Hive全量重刷任务DWM/DWS汇总层湖内明细聚合统计后写入Hive兼容原有离线报表应用层明细/实时/AI走湖离线指标/BI看板走仓Trino统一查询五、数据湖与数据仓库核心区别5.1 核心差异对比数据类型数据湖支持全类型数据数据仓库仅支持结构化数据Schema机制数据湖读时解析、支持演进数据仓库写时校验、结构固定事务能力数据湖支持ACID增删改查数据仓库无事务、仅覆盖写入回溯能力数据湖原生时间旅行回溯数据仓库无原生回溯能力存储成本数据湖冷热分层、低成本归档数据仓库仅高价温热存储业务场景数据湖适配实时、增量、AI、海量归档数据仓库适配标准化离线报表5.2 落地核心原则原始明细入湖聚合指标入仓变更数据入湖固定口径入仓冷量数据入湖温热指标入仓六、落地核心代码实现6.1 Hudi入湖建表语句增量更新快照回溯CREATETABLEhive_ods_order_hudi(order_id string,user_id string,order_statusint,amountdecimal(10,2),create_time string,update_time string)PARTITIONEDBY(dt string)STOREDASHUDI TBLPROPERTIES(hoodie.table.namehive_ods_order_hudi,hoodie.datasource.write.recordkey.fieldorder_id,hoodie.datasource.write.partitionpath.fielddt,hoodie.datasource.write.precombine.fieldupdate_time,hoodie.datasource.write.operationupsert,hoodie.enable.time.traveltrue,hoodie.keep.max.commits30);6.2 Iceberg入湖建表语句Schema演进统一查询CREATETABLEhive_ods_user_log_iceberg(log_id string,user_id string,event_type string,event_json string,create_timetimestamp)PARTITIONEDBY(dt string)STOREDASICEBERG TBLPROPERTIES(format-version2,vacuum.min-retention7);6.3 湖表时间回溯查询代码-- Hudi 指定时间快照回溯查询SELECT*FROMhive_ods_order_hudiFORSYSTEM_TIMEASOFTIMESTAMP2026-06-01 00:00:00WHEREdt2026-06-01;-- Iceberg 历史快照回溯查询SELECT*FROMhive_ods_user_log_icebergFORSYSTEM_TIMEASOF2026-06-01 00:00:00WHEREdt2026-06-01;6.4 Spark湖转仓汇总代码spark.read.format(hudi).load(/warehouse/hive_ods_order_hudi).filter(dt 2026-06-01).groupBy(dt,order_status).agg(count(order_id).alias(order_cnt),sum(amount).alias(total_amount)).write.mode(overwrite).partitionBy(dt).saveAsTable(hive_dws_order_summary);6.5 Trino湖仓统一查询代码SELECTa.dt,a.order_cnt,a.total_amount,b.order_id,b.user_idFROMhive_dws_order_summary aLEFTJOINhive_ods_order_hudi bONa.dtb.dtWHEREa.dt2026-06-01;七、最终落地规范原始日志、CDC增量、大批量变更、AI样本、历史冷数据全部入湖聚合汇总、核心指标、标准化BI报表、合规对账数据全部入仓高频更新业务表统一使用Hudi/Iceberg湖表替换Hive全量重刷任务存量Hive汇总表保留实现新旧架构平滑过渡统一使用Trino/Presto查询引擎实现湖仓一体化查询