Doris离线数据处理

58 阅读1分钟

分区

// 查看分区
SHOW PARTITIONS FROM <表名>;

- State
- Partition Key
- Range
- Distribution Key
- Buckets
- Replication Num
- DataSize
  • 使用时注意分区粒度不能太小,否则导致分区数量太多,很容易超过分区上限
    • 超过分区上限可以删除部分不用的分区

数据模型

  • DUPLICATE KEY

    • 原始数据分析
    • 仅追加模式,如:日志、时序数据分析
    • 示例
      CREATE TABLE session_data (
          visitor_id BIGINT,
          session_id BIGINT,
          visit_time DATETIME,
          city       CHAR(255),
          province   CHAR(255),
          ip         CHAR(32),
      )
      DUPLICATE KEY(visitor_id,session_id) -- 只用于指定排序列,相同 KEY 的行不会合并
      DISTRIBUTED BY HASH(visitor_id,session_id) BUCKETS 10; -- 指定分桶策略、桶数量
      
  • AGGREGATE KEY

    • 适合报表和多维业务分析

      • 网站流量分析
      • 数据报表多维分析
    • 按照 KEY 和 VALUE 列指定的聚合函数,执行聚合

    • 聚合函数

      • SUM
      • REPLACE
      • REPLACE_IF_NOT_NULL
      • MAX
      • MIN
      • HLL_UNION
      • BITMAP_UNION
    • 示例

      CREATE TABLE site_visit(
          site_id INT,
          city_id INT,
          user_id INT,
          pv      BIGINT SUM DEFAULT '0'
      )
      AGGREGATE KEY(site_id,city_id,user_id) -- 相同 KEY 的记录,会按照 VALUE 列指定的聚合函数进行聚合
      DISTRIBUTED BY HASH(site_id) BUCKETS 10;
      
  • UNIQUE KEY

    • 适合有更新需求的分析业务

      • 订单去重分析
      • 实时同步更新
    • 示例

      CREATE TABLE sales_order(
          order_id INT,
          city_id INT,
          user_id INT,
          amount      BIGINT DEFAULT '0'
      )
      DUPLICATE KEY(order_id) -- 相同 KEY 的记录,新 VALUE 替换 旧 VALUE
      DISTRIBUTED BY HASH(site_id) BUCKETS 10;