hive数仓的分层与建模

Hive 数据仓库分层和数据建模是一种常见的数据仓库设计方法,旨在通过分层的方式组织数据,提高数据的可维护性、可复用性和查询性能。以下是关于 Hive 数据仓库分层和数据建模的详细知识:


一、Hive 数据仓库分层

数据仓库通常采用分层架构,目的是将数据按照不同的处理阶段和用途进行划分,便于管理和优化。常见的分层架构包括以下四层:

1. ODS(Operational Data Store,操作数据存储层)

  • 作用:ODS 层是数据仓库的最底层,直接对接源系统,存储原始数据。

  • 特点

    • 数据与源系统保持一致,通常是未经过清洗和转换的原始数据。
    • 数据存储周期较短,可能是增量或全量数据。
    • 数据格式与源系统一致,可能包含冗余和不一致的数据。
  • 示例

    sql 复制代码
    CREATE TABLE ods_user_log (
        user_id BIGINT,
        action STRING,
        log_time STRING
    ) STORED AS ORC;

2. DWD(Data Warehouse Detail,数据仓库明细层)

  • 作用:对 ODS 层的数据进行清洗、转换和整合,生成高质量的明细数据。

  • 特点

    • 数据经过清洗,去除了脏数据和不一致数据。
    • 数据按照业务需求进行标准化和规范化。
    • 数据粒度与 ODS 层一致,但质量更高。
  • 示例

    sql 复制代码
    CREATE TABLE dwd_user_log (
        user_id BIGINT,
        action STRING,
        log_time TIMESTAMP
    ) STORED AS ORC;

3. DWS(Data Warehouse Summary,数据仓库汇总层)

  • 作用:基于 DWD 层的数据,按照业务需求进行聚合和汇总,生成宽表或主题表。

  • 特点

    • 数据粒度比 DWD 层粗,通常是按天、周、月等时间维度或业务维度汇总。
    • 数据以宽表形式存储,便于后续分析和查询。
  • 示例

    sql 复制代码
    CREATE TABLE dws_user_daily_summary (
        user_id BIGINT,
        action_count INT,
        log_date STRING
    ) STORED AS ORC;

4. ADS(Application Data Store,应用数据层)

  • 作用:面向最终业务需求,提供高度聚合的数据,直接支持报表、分析和应用。

  • 特点

    • 数据粒度最粗,通常是高度聚合的结果。
    • 数据直接服务于业务需求,如报表、BI 工具等。
  • 示例

    sql 复制代码
    CREATE TABLE ads_user_monthly_report (
        user_id BIGINT,
        total_actions INT,
        month STRING
    ) STORED AS ORC;

二、Hive 数据建模

数据建模是设计数据仓库的核心步骤,常见的建模方法包括 维度建模范式建模 。在 Hive 中,通常采用 维度建模,因为它更适合分析型场景。

1. 维度建模的核心概念

  • 事实表(Fact Table)

    • 存储业务过程中的度量数据(如销售额、订单数量)。

    • 通常包含外键,关联到维度表。

    • 示例:

      sql 复制代码
      CREATE TABLE fact_sales (
          sale_id BIGINT,
          product_id BIGINT,
          customer_id BIGINT,
          sale_amount DECIMAL(10, 2),
          sale_date STRING
      ) STORED AS ORC;
  • 维度表(Dimension Table)

    • 存储描述性数据(如产品、客户、时间等)。

    • 通常包含主键,用于与事实表关联。

    • 示例:

      sql 复制代码
      CREATE TABLE dim_product (
          product_id BIGINT,
          product_name STRING,
          category STRING
      ) STORED AS ORC;

2. 常见的维度建模方法

  • 星型模型(Star Schema)

    • 一个事实表与多个维度表直接关联。

    • 结构简单,查询性能高。

    • 示例:

      sql 复制代码
      -- 事实表
      CREATE TABLE fact_sales (
          sale_id BIGINT,
          product_id BIGINT,
          customer_id BIGINT,
          sale_amount DECIMAL(10, 2),
          sale_date STRING
      ) STORED AS ORC;
      
      -- 维度表
      CREATE TABLE dim_product (
          product_id BIGINT,
          product_name STRING,
          category STRING
      ) STORED AS ORC;
      
      CREATE TABLE dim_customer (
          customer_id BIGINT,
          customer_name STRING,
          city STRING
      ) STORED AS ORC;
  • 雪花模型(Snowflake Schema)

    • 维度表进一步规范化,形成多层关联。

    • 节省存储空间,但查询性能较低。

    • 示例:

      sql 复制代码
      CREATE TABLE dim_product (
          product_id BIGINT,
          product_name STRING,
          category_id BIGINT
      ) STORED AS ORC;
      
      CREATE TABLE dim_category (
          category_id BIGINT,
          category_name STRING
      ) STORED AS ORC;
  • 星座模型(Galaxy Schema)

    • 多个事实表共享维度表。
    • 适用于复杂的业务场景。

三、Hive 数据仓库优化建议

  1. 分区表:按时间或业务字段分区,提高查询效率。

    sql 复制代码
    CREATE TABLE fact_sales (
        sale_id BIGINT,
        product_id BIGINT,
        sale_amount DECIMAL(10, 2)
    ) PARTITIONED BY (sale_date STRING) STORED AS ORC;
  2. 分桶表:对数据进行分桶,优化 JOIN 和聚合操作。

    sql 复制代码
    CREATE TABLE fact_sales (
        sale_id BIGINT,
        product_id BIGINT,
        sale_amount DECIMAL(10, 2)
    ) CLUSTERED BY (product_id) INTO 10 BUCKETS STORED AS ORC;
  3. 使用 ORC/Parquet 格式:提高存储和查询性能。

  4. 压缩数据:减少存储空间和 I/O 开销。

    sql 复制代码
    SET hive.exec.compress.output=true;
    SET mapreduce.output.fileoutputformat.compress=true;
    SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

通过合理的分层和建模,可以构建高效、可扩展的 Hive 数据仓库,满足业务需求并提升数据分析效率。

相关推荐
心灵Haven6 小时前
Hive之最新方式MySQL5.7 安装
数据仓库·hive·hadoop
DouMiaoO_Oo6 小时前
数据总线/一致性维度/总线矩阵
数据仓库
开着拖拉机回家15 小时前
【Hadoop】大数据权限管理工具Ranger2.1.0编译
大数据·hadoop·权限管理·ranger·源码编译
B站计算机毕业设计超人16 小时前
计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习
大数据·hadoop·深度学习·机器学习·spark·知识图谱·课程设计
The god of big data19 小时前
教程 | HDFS基本使用方法详解
大数据·hadoop·hdfs
专注API从业者21 小时前
反向海淘独立站未来发展趋势:机遇与挑战并存,如何抢占先机?
大数据·开发语言·前端·数据仓库
心灵Haven21 小时前
Hive之[Hive]详细安装步骤
数据仓库·hive·hadoop
lj90772264421 小时前
nexus部署及配置https访问
数据仓库·网络协议·http·docker·https
大数据魔法师1 天前
HiveQL命令(三)- Hive函数
数据仓库·hive·hadoop