zoukankan      html  css  js  c++  java
  • Hive-拉链表

    一、问答介绍

    1.什么是拉链表?

        维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户记录。记录一个事物从开始,一直到当前状态的所有变化的信息(生命周期)。核心字段为生效开始日期与生效结束日期(粒度)。

    2.为什么用拉链表(应用场景决定)?

     1)原数据量很大(查询费劲)

     2)表中部分字段会被更新(更新后又想看历史)

     3)需求中需要对某一时刻数据查询(业务粒度)

     4)更新频率不频繁且更新数据量不大(拉链表过大就没多大意义了)

     5)需要节省存储资源(节约成本)

    二、Hive使用拉链表

    1.案例场景:将mysql中的数据按每日的粒度增量(新建+修改)跟新到hive拉链表。

    2.需求:通过相关操作得到最新的拉链表。

    3.相关表:mysql原表,Hive拉链表,Hive数据变化表,Hive数据临时表

    4.相关技巧点(先思考,后面解释):

        1.如何获取mysql当日数据变动?(粒度为天)
        2.如何hive表跟新修改后的数据?(如何改变生效结束日期)
        3.拉链表如何跟新?(hive不能修改)

    5.获取mysql每日数据变化:获取到每日变化的数据后,将数据覆盖到hive数据变化表:初始化拉链表为mysql全量导入hive拉链表

        1.设计mysql表时加入数据创建时间及操作更新时间(最优)
        2.第三方监控工具如canal(繁琐)

    6.hive更改数据的生效结束时间:将新增数据获取到hive临时表

    7.将hive临时表覆盖hive拉链表,任务完成。

    8.hive临时表为该方案的核心技术点。

    若有疑问可评论中提出,后续补充到本文。

  • 相关阅读:
    CRM 跳转到数据修改页面、动态生成model,form、增加新增页面——第21天
    CRM 日期字段过滤功能——第21天
    CRM多条件查询——第20天
    CRM排序——第19天
    CRM_分页显示——第18天
    CRM分页 ——第17天
    CRM多条件筛选和分页——第16天
    python global、nonlocal、闭包、作用域——第10天
    uniAPP view 和 swiper
    uniAPP tabBar 设置
  • 原文地址:https://www.cnblogs.com/wanchen-chen/p/12934090.html
Copyright © 2011-2022 走看看