hadoop学习---基于Hive的数仓搭建增量信息拉链表的实现

拉链表就是SCD2,它的优点是即满足了反应数据的历史状态,又能在最大程度上节省存储。

拉链表的实现需要在原始字段基础上增加两个新字段:

  1. start_time(表示该条记录的生命周期开始时间------周期快照时的状态)
  2. end_time(该条记录的生命周期结束时间)

采集实现步骤

  1. 建立增量数据临时表update;
  2. 抽取昨日增量数据(新增和更新)到update表;
  3. 建立合并数据临时表tmp;
  4. 合并昨日增量数据(update表)与历史数据(拉链表):
    1. 新数据end_time设为'9999-12-31',也就是当前有效;
    2. 如果增量数据有重复id的旧数据,将旧数据end_time更新为前天(昨日-1),也就是从昨天开始不再生效;
    3. 合并后的数据写入tmp表;
  5. 将临时表的数据,覆盖到拉链表中;
  6. 下次抽取需要重建update表和tmp表。
  7. 查询拉链表数据时,可以通过start_time和end_time查询出快照数据。

小结:

当每日采集增量信息时,采用拉链表的方式,通常在原始信息表中增加有效信息开始时间start_time和结束时间end_time两个字段,先将改变或新增的信息提取出来组成一张新表,再将新表与原始表做右外联接,重新抽取字段更新end_time字段信息,目的是改变原始表的旧信息的end_time时间,最后将更新后的原始表和新增的更新信息表进行union all 操作,并将结果覆盖到hive数据库中。

也就是原有hive数据库中的表不变,想办法更新旧信息的end_time时间,同时将新增信息后改写后的信息重新新增一行到原始数据表中即可。

案例流程:

相关推荐
西岸行者7 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
B站计算机毕业设计超人7 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
B站计算机毕业设计超人7 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城7 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
悠哉悠哉愿意7 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码7 天前
嵌入式学习路线
学习
王九思7 天前
Hive Thrift Server 介绍
数据仓库·hive·hadoop
毛小茛7 天前
计算机系统概论——校验码
学习
babe小鑫7 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2