Doris hdfs数据导入doris动态分区表
发布日期:2021-05-10 23:05:51 浏览次数:27 分类:精选文章

本文共 2723 字,大约阅读时间需要 9 分钟。

Doris动态分区表与HDFS数据导入指南

前期准备

在开始操作之前,需要完成以下准备工作:

  • 安装Doris

    确保已经完成了Doris的安装配置。如果尚未安装,请参考Doris官方文档或联系技术支持进行部署。

  • 了解Doris基础知识

    熟悉Doris的数据模型和基本操作。Doris的数据模型主要分为三类:AggregateDuplicateUnique;支持单分区和复合分区两种建表方式。单分区指只指定分桶,复合分区指先指定分区再指定分桶。


  • 一、创建动态分区表

    在Doris中创建动态分区表,需要使用以下命令:

    CREATE TABLE test_db.doris_table_1
    (
    dt DATE,
    type VARCHAR(20),
    id VARCHAR(100),
    campaignid VARCHAR(10),
    spotid VARCHAR(10),
    ts BIGINT MIN,
    cnt BIGINT SUM
    )
    ENGINE = OLAP
    AGGREGATE KEY (dt, type, id, campaignid, spotid)
    PARTITION BY RANGE (dt)
    (
    PARTITION p1 VALUES LESS THAN ("2020-09-01"),
    PARTITION p2 VALUES LESS THAN ("2020-12-01"),
    PARTITION p3 VALUES LESS THAN ("2021-03-01"),
    PARTITION p4 VALUES LESS THAN ("2021-06-01")
    )
    DISTRIBUTED BY HASH (id)
    BUCKETS 10
    PROPERTIES (
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "10"
    );

    重要参数说明

    • ENGINE:默认为OLAP,支持多种引擎类型,建议使用OLAP。
    • AGGREGATE KEY:指定聚合字段,表将按这些字段进行聚合。
    • PARTITION BY:定义分区依据。如果不需要复合分区,可以省略。
    • DISTRIBUTED BY:指定分桶依据,决定数据分布的方式。
    • dynamic_partition.enable:默认为false,设置为true启用动态分区。
    • dynamic_partition.time_unit:定时单位,可选HOURDAYWEEKMONTH
    • dynamic_partition.end:预定义分区的数量。
    • dynamic_partition.prefix:自动生成分区前缀的字段,通常不使用。
    • dynamic_partition.buckets:自动生成分区的分桶数量。

    二、导入HDFS数据

    使用LOAD LABEL命令将HDFS数据导入Doris动态分区表:

    LOAD LABEL doris_table_1_001
    (
    DATA INFILE("hdfs://ns/user/test_db/hive_table_1/dt=*/*")
    INTO TABLE `doris_table_1`
    COLUMNS TERMINATED BY "|"
    (type, id, idtype, campaignid, spotid, referrer, ts, pcos, browser, ip)
    COLUMNS FROM PATH AS (dt)
    SET (cnt = 1)
    WITH BROKER broker_name
    (
    "username" = "hdfs_user",
    "password" = "hdfs_password",
    "dfs.nameservices" = "ns",
    "dfs.ha.namenodes.ns" = "namenode30, namenode55",
    "dfs.namenode.rpc-address.ns.namenode30" = "yc-nsg-h2:8020",
    "dfs.namenode.rpc-address.ns.namenode55" = "yc-nsg-h3:8020",
    "dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
    )
    PROPERTIES (
    "timeout" = "3600",
    "max_filter_ratio" = "0.1",
    "timezone" = "Asia/Shanghai"
    );

    重要参数说明

    • Columns TERMINATED BY:指定字段分隔符,默认为|
    • Columns FROM PATH AS:将路径中的值作为参数传递到Doris。
    • SET (cnt = 1):在导入数据时,增加一个预聚合字段cnt,默认值为1。
    • BROKER:配置HDFS集群信息,包括用户名、密码、HA节点等。
    • PROPERTIES:设置加载任务的其他参数,如超时、过滤比例和时区。

    常见问题解答

  • 动态分区表的数据同步方式是什么?

    动态分区表支持两种方式:预定义分区动态分区。预定义分区适用于已知分区范围,而动态分区适用于数据不断增加的情况。

  • 如何处理HDFS路径中的日期范围?

    LOAD LABEL命令中,可以通过COLUMNS FROM PATH AS指定时间字段,例如dt,Doris会自动解析路径中的日期。

  • 预聚合字段cnt的作用是什么?

    预聚合字段用于记录数据的数量,支持聚合函数如SUMMIN等,提升数据统计效率。


  • 总结

    通过以上步骤,可以成功将HDFS数据导入Doris的动态分区表中。动态分区表的优势在于灵活的数据扩展能力,而预聚合字段则提升了数据处理的效率。如果需要更详细的操作指导或优化方案,欢迎在评论区留言交流。

    上一篇:Clickhouse 集群安装(完整版)
    下一篇:Doris 编译安装(完整版)

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月20日 10时30分53秒