码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 如何在Hive中更新拉链表


    这里写目录标题

    • 拉链表
      • 初始条件:
      • 具体操作:
        • 准备工作:
        • 第一步:让有效数据过期(针对有更新的数据)
        • 第二步:union all 拉链表和临时表update(加上新增和更新的数据),并导入到tmp表;
        • 第三步:将结果临时表temp 覆盖原始拉链表

    拉链表

    作用:用来解决历史变更数据是否维护的情况;

    用来记录历史数据,记录一个事物从开始一直到当前状态的所有变化的信息。

    拉链表有start_time和end_time字段来记录每条数据的生命周期;

    有效数据:即指的是数据的end_time=‘9999-12-31’
    过期数据:即指的是数据的end_time不等于‘9999-12-31’

    初始条件:

    ODS层 原始拉链表:
    在这里插入图片描述
    临时表:包含新增和更新的数据
    在这里插入图片描述

    具体操作:

    准备工作:

    • 【在hive的ODS层】构建临时表 update ,用于存新增、更新数据 ,
    • 将MySQL中新增、更新的数据导入临时表 update(sqoop);
    • 【在hive的ODS层】构建最终结果临时表 tmp,用于存储最终结果, tmp会覆盖原始拉链表!

    第一步:让有效数据过期(针对有更新的数据)

    目的是将需要更新的数据置为过期;
    而已经过期的数据则不管;

    用【ODS层】的 原拉链表 LEFT JOIN 临时表update:
    在这里插入图片描述

    在这里插入图片描述
    当某id原始数据有效(9999-12-31) 且 临时表中有数据! 则要改编end_time !
    即只需要更新的数据处理,让数据过期;

    第二步:union all 拉链表和临时表update(加上新增和更新的数据),并导入到tmp表;

    使用union all 进行上下合并(union会去重);在这里插入图片描述
    +
    insert overwrite tmp select * from (以上sql) ;

    最终结果:
    在这里插入图片描述

    第三步:将结果临时表temp 覆盖原始拉链表

    在更新拉链表时,可能会失败,而在sql中使用到了原始拉链表,如果再覆盖原始拉链表,数据容易出问题;

    所以对生成的结果存在最终临时表tmp中,然后再覆盖到原表;
    在这里插入图片描述

  • 相关阅读:
    MySQL的DATE_FORMAT函数使用
    Linux便捷操作
    苹果维修堪比登天难:评级F,获得最低分2.75分
    vsomeip3 双机通信文件配置
    信创需求激增,国产服务器操作系统赋能数字化转型
    Jmter压测使用实践
    parallel recovery slave next change & parallel recovery push change
    ctf web基础php
    Flutter 7 个开源项目推荐 01
    orangepi香橙派 ubuntu安装RabbitMQ
  • 原文地址:https://blog.csdn.net/Swofford/article/details/126574906
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号