为什么hive在处理数据时,有的累加是半累加数据

在 Hive 处理数据时,"半累加数据" 指的是部分字段保留历史状态、部分字段随业务变化累加或更新的场景,这种模式广泛存在于需要兼顾 "历史追溯" 和 "增量更新" 的业务中。以下是具体例子,帮助理解其本质:

例子 1:用户行为维度表(SCD2 模型)

业务场景:用户信息表中,部分属性(如注册时间)一旦生成就固定不变,部分属性(如用户等级、积分)需要随行为累加或更新,同时需要保留历史状态。

数据变化过程

  1. 初始数据(2023-01-01):

    用户 ID 注册时间 等级 积分 生效时间 失效时间
    1001 2023-01-01 Lv1 0 2023-01-01 9999-12-31
  2. 2023-02-01 用户积分增加到 100,等级升级为 Lv2:

    不修改原记录,而是新增一条记录(保留历史版本):

    用户 ID 注册时间 等级 积分 生效时间 失效时间
    1001 2023-01-01 Lv1 0 2023-01-01 2023-01-31 (历史版本)
    1001 2023-01-01 Lv2 100 2023-02-01 9999-12-31 (当前版本)

半累加特征

  • 静态字段(注册时间):永远不变,不参与累加。
  • 动态字段(等级、积分):随业务更新,新记录覆盖旧状态,但通过 "生效 / 失效时间" 保留历史。
  • 整体数据量:随变更累加(新增记录),但单条记录不被覆盖。

例子 2:订单状态流水表

业务场景:订单创建后,金额、商品等信息固定,但支付状态、退款次数等需要随流程更新,同时需要记录状态变更轨迹。

数据变化过程

  1. 订单创建(2023-03-01 10:00):

    订单 ID 金额 商品 支付状态 退款次数 记录时间
    O2001 200 衬衫 未支付 0 2023-03-01 10:00
  2. 2023-03-01 10:30 支付成功:

    新增一条状态记录(不修改原记录):

    订单 ID 金额 商品 支付状态 退款次数 记录时间
    O2001 200 衬衫 未支付 0 2023-03-01 10:00
    O2001 200 衬衫 已支付 0 2023-03-01 10:30
  3. 2023-03-02 09:00 申请退款:

    再新增一条记录:

    订单 ID 金额 商品 支付状态 退款次数 记录时间
    O2001 200 衬衫 未支付 0 2023-03-01 10:00
    O2001 200 衬衫 已支付 0 2023-03-01 10:30
    O2001 200 衬衫 已退款 1 2023-03-02 09:00

半累加特征

  • 静态字段(金额、商品):创建后固定,不参与累加。
  • 动态字段(支付状态、退款次数):随流程更新,每次变更生成新记录。
  • 整体数据:按状态变更累加,可追溯完整流程,但不会覆盖历史状态。

例子 3:每日活跃用户增量表

业务场景:按天统计活跃用户,每天的活跃用户是增量数据,但用户的基础信息(如注册渠道)固定。

数据存储方式

  • 按天分区(dt='2023-05-01'dt='2023-05-02'等)。
  • 每个分区存储当天活跃用户的信息,包含固定字段和动态字段。

数据示例

  • dt='2023-05-01' 分区:

    用户 ID 注册渠道 当日活跃时长(分钟)
    1001 官网 30
    1002 应用商店 45
  • dt='2023-05-02' 分区(新增当日活跃用户):

    用户 ID 注册渠道 当日活跃时长(分钟)
    1001 官网 20 (1001 用户再次活跃)
    1003 小程序 15 (新活跃用户)

半累加特征

  • 静态字段(注册渠道):每个用户只记录一次(或重复但值不变),不随日期累加。
  • 动态字段(当日活跃时长):按日增量记录,累计计算总时长时需汇总各分区。
  • 整体数据:按日期分区累加,每个分区是独立的增量,不覆盖历史分区。

总结

半累加数据的核心是 **"区分静态与动态字段,保留历史同时支持增量更新"**,这既满足了数据仓库 "可追溯" 的需求,也适配了 Hive 基于 HDFS"擅长追加、不擅长修改" 的技术特性。常见于维度表(SCD2)、状态流水表、按时间分区的增量统计场景中。

相关推荐
小白不想白a5 小时前
【Hadoop】Zookeeper、HBase、Sqoop
hadoop·分布式·zookeeper·hbase·sqoop
小白不想白a6 小时前
【Hadoop】YARN、离线计算框架MapReduce、Hive
大数据·hive·hadoop·mapreduce·yarn
Lx35212 小时前
Hadoop集群资源管理:合理分配CPU和内存资源
大数据·hadoop
IT研究室15 小时前
大数据毕业设计选题推荐-基于大数据的城市空气污染数据分析系统-Spark-Hadoop-Bigdata
大数据·hadoop·spark·毕业设计·源码·bigdata·选题推荐
Lx35216 小时前
MapReduce内存调优:避免OOM的黄金法则
大数据·hadoop
lifallen1 天前
Hadoop MapReduce 任务/输入数据 分片 InputSplit 解析
大数据·数据结构·hadoop·分布式·算法
小白不想白a2 天前
【Hadoop】HDFS 分布式存储系统
hadoop·分布式·hdfs
IT毕设梦工厂2 天前
大数据毕业设计选题推荐-基于大数据的丙型肝炎患者数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·spark·毕业设计·源码·bigdata
IT毕设梦工厂2 天前
大数据毕业设计选题推荐-基于大数据的超市销售数据统计分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·spark·毕业设计·源码·数据可视化·bigdata