• 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临时表为该方案的核心技术点。

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

  • 相关阅读:
    用opengl实现多个视口
    齐次坐标和矩阵变换
    关于透明和不透明排序问题
    PlaneBoundedVolumeList平面体积查询
    jQuery获取元素
    关于借助prototype进行分页的一个小插件
    浏览器解析状态
    关于获取元素进行动画效果的问题以及简单的正则表达式验证
    php简单分页类
    生产者消费者问题
  • 原文地址:https://www.cnblogs.com/wanchen-chen/p/12934090.html
Copyright © 2020-2023  润新知