Apache Doris 入门教程10:数据导入之Broker Load

BrokerLoad是Doris的一种异步数据导入方式,适用于数据在Broker可访问的存储系统中,如HDFS。它利用Doris集群资源对数据进行排序,但相比Sparkload,对资源占用较大。用户需通过MySQL协议创建和管理导入任务。示例包括从Hive分区表(包括ORC格式)和HDFS导入数据。导入过程涉及FE和BE的协调工作,以及通过Broker与存储系统的交互。最佳实践建议根据数据量和BE数量调整导入参数,以优化性能和避免导入失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Broker Load


Broker load 是一个异步的导入方式,支持的数据源取决于 Broker 进程支持的数据源。

因为 Doris 表里的数据是有序的,所以 Broker load 在导入数据的时是要利用doris 集群资源对数据进行排序,相对于 Spark load 来完成海量历史数据迁移,对 Doris 的集群资源占用要比较大,这种方式是在用户没有 Spark 这种计算资源的情况下使用,如果有 Spark 计算资源建议使用 Spark load。

用户需要通过 MySQL 协议 创建 Broker load 导入,并通过查看导入命令检查导入结果。

适用场景

  • 源数据在 Broker 可以访问的存储系统中,如 HDFS。
  • 数据量在 几十到百GB 级别。

基本原理

用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。

BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。

                 +
                 | 1. user create broker load
                 v
            +----+----+
            |         |
            |   FE    |
            |         |
            +----+----+
                 |
                 | 2. BE etl and load the data
    +--------------------------+
    |            |             |
+---v---+     +--v----+    +---v---+
|       |     |       |    |       |
|  BE   |     |  BE   |    |   BE  |
|       |     |       |    |       |
+---+-^-+     +---+-^-+    +--+-^--+
    | |           | |         | |
    | |           | |         | | 3. pull data from broker
+---v-+-+     +---v-+-+    +--v-+--+
|       |     |       |    |       |
|Broker |     |Broker |    |Broker |
|       |     |       |    |       |
+---+-^-+     +---+-^-+    +---+-^-+
    | |           | |          | |
+---v-+-----------v-+----------v-+-+
|       HDFS/BOS/AFS cluster       |
|                                  |
+----------------------------------+

开始导入

下面我们通过几个实际的场景示例来看 Broker Load 的使用

Hive 分区表的数据导入

  1. 创建 Hive 表
##数据格式是:默认,分区字段是:day
CREATE TABLE `ods_demo_detail`(
  `id` string, 
  `store_id` string, 
  `company_id` string, 
  `tower_id` string, 
  `commodity_id` string, 
  `commodity_name` string, 
  `commodity_price` double, 
  `member_price` double, 
  `cost_price` double, 
  `unit` string, 
  `quantity` double, 
  `actual_price` double
)
PARTITIONED BY (day string)
row format delimited fields terminated by ','
lines terminated by '\n'

然后使用 Hive 的 Load 命令将你的数据导入到 Hive 表中

load data local inpath '/opt/custorm' into table ods_demo_detail;
  1. 创建 Doris 表
CREATE TABLE `doris_ods_test_detail` (
  `rq` date NULL,
  `id` varchar(32) NOT NULL,
  `store_id` varchar(32) NULL,
  `company_id` varchar(32) NULL,
  `tower_id` varchar(32) NULL,
  `commodity_id` varchar(32) NULL,
  `commodity_name` varchar(500) NULL,
  `commodity_price` decimal(10, 2) NULL,
  `member_price` decimal(10, 2) NULL,
  `cost_price` decimal(10, 2) NULL,
  `unit` varchar(50) NULL,
  `quantity` int(11) NULL,
  `actual_price` decimal(10, 2) NULL
) ENGINE=OLAP
UNIQUE KEY(`rq`, `id`, `store_id`)
PARTITION BY RANGE(`rq`)
(
PARTITION P_202204 VALUES [('2022-04-01'), ('2022-05-01')))
DISTRIBUTED BY HASH(`store_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "MONTH",
"dynamic_partition.start" = "-2147483648",
"dynamic_partition.end" = "2",
"dynamic_partition.prefix" = "P_",
"dynamic_partition.buckets" = "1",
"in_memory" = "false",
"storage_format" = "V2"
);

2. 开始导入数据

LOAD LABEL broker_load_2022_03_23
(
    DATA INFILE("hdfs://192.168.20.123:8020/user/hive/warehouse/ods.db/ods_demo_detail/*/*")
    INTO TABLE doris_ods_test_detail
    COLUMNS TERMINATED BY ","
  (id,store_id,company_id,tower_id,commodity_id,commodity_name,commodity_price,member_price,cost_price,unit,quantity,actual_price) 
    COLUMNS FROM PATH AS (`day`)
   SET 
   (rq = str_to_date(`day`,'%Y-%m-%d'),id=id,store_id=store_id,company_id=company_id,tower_id=tower_id,commodity_id=commodity_id,commodity_name=commodity_name,commodity_price=commodity_price,member_price=member_price,cost_price=cost_price,unit=unit,quantity=quantity,actual_price=actual_price)
    )
WITH BROKER "broker_name_1" 
    ( 
      "username" = "hdfs", 
      "password" = "" 
    )
PROPERTIES
(
    "timeout"="1200",
    "max_filter_ratio"="0.1"
);

Hive 分区表导入(ORC格式)

  1. 创建Hive分区表,ORC格式
#数据格式:ORC 分区:day
CREATE TABLE `ods_demo_orc_detail`(
  `id` string, 
  `store_id` string, 
  `company_id` string, 
  `tower_id` string, 
  `commodity_id` string, 
  `commodity_name` string, 
  `commodity_price` double, 
  `member_price` double, 
  `cost_price` double, 
  `unit` string, 
  `quantity` double, 
  `actual_price` double
)
PARTITIONED BY (day string)
row format delimited fields terminated by ','
lines terminated by '\n'
STORED AS ORC

  1. 创建Doris表,这里的建表语句和上面的Doris建表语句一样,请参考上面的.

  2. 使用 Broker Load 导入数据

    LOAD LABEL dish_2022_03_23
    (
        DATA INFILE("hdfs://10.220.147.151:8020/user/hive/warehouse/ods.db/ods_demo_orc_detail/*/*")
        INTO TABLE doris_ods_test_detail
        COLUMNS TERMINATED BY ","
        FORMAT AS "orc"
    (id,store_id,company_id,tower_id,commodity_id,commodity_name,commodity_price,member_price,cost_price,unit,quantity,actual_price) 
        COLUMNS FROM PATH AS (`day`)
       SET 
       (rq = str_to_date(`day`,'%Y-%m-%d'),id=id,store_id=store_id,company_id=company_id,tower_id=tower_id,commodity_id=commodity_id,commodity_name=commodity_name,commodity_price=commodity_price,member_price=member_price,cost_price=cost_price,unit=unit,quantity=quantity,actual_price=actual_price)
        )
    WITH BROKER "broker_name_1" 
        ( 
          "username" = "hdfs", 
          "password" = "" 
        )
    PROPERTIES
    (
        "timeout"="1200",
        "max_filter_ratio"="0.1"
    );
    

    注意:

    • FORMAT AS "orc" : 这里我们指定了要导入的数据格式
    • SET : 这里我们定义了 Hive 表和 Doris 表之间的字段映射关系及字段转换的一些操作

HDFS文件系统数据导入

我们继续以上面创建好的 Doris 表为例,演示通过 Broker Load 从 HDFS 上导入数据。

导入作业的语句如下:

LOAD LABEL demo.label_20220402
        (
            DATA INFILE("hdfs://10.220.147.151:8020/tmp/test_hdfs.txt")
            INTO TABLE `ods_dish_detail_test`
            COLUMNS TERMINATED BY "\t"            (id,store_id,company_id,tower_id,commodity_id,commodity_name,commodity_price,member_price,cost_price,unit,quantity,actual_price)
        ) 
        with HDFS (
            "fs.defaultFS"="hdfs://10.220.147.151:8020",
            "hadoop.username"="root"
        )
        PROPERTIES
        (
            "timeout"="1200",
            "max_filter_ratio"="0.1"
        );

这里的具体 参数可以参照: Broker 及 Broker Load 文档

查看导入状态

我们可以通过下面的命令查看上面导入任务的状态信息,

具体的查看导入状态的语法参考 SHOW LOAD

mysql> show load order by createtime desc limit 1\G;
*************************** 1. row ***************************
         JobId: 41326624
         Label: broker_load_2022_03_23
         State: FINISHED
      Progress: ETL:100%; LOAD:100%
          Type: BROKER
       EtlInfo: unselected.rows=0; dpp.abnorm.ALL=0; dpp.norm.ALL=27
      TaskInfo: cluster:N/A; timeout(s):1200; max_filter_ratio:0.1
      ErrorMsg: NULL
    CreateTime: 2022-04-01 18:59:06
  EtlStartTime: 2022-04-01 18:59:11
 EtlFinishTime: 2022-04-01 18:59:11
 LoadStartTime: 2022-04-01 18:59:11
LoadFinishTime: 2022-04-01 18:59:11
           URL: NULL
    JobDetails: {"Unfinished backends":{"5072bde59b74b65-8d2c0ee5b029adc0":[]},"ScannedRows":27,"TaskNumber":1,"All backends":{"5072bde59b74b65-8d2c0ee5b029adc0":[36728051]},"FileNumber":1,"FileSize":5540}
1 row in set (0.01 sec)

取消导入

当 Broker load 作业状态不为 CANCELLED 或 FINISHED 时,可以被用户手动取消。取消时需要指定待取消导入任务的 Label 。取消导入命令语法可执行 CANCEL LOAD 查看。

例如:撤销数据库 demo 上, label 为 broker_load_2022_03_23 的导入作业

CANCEL LOAD FROM demo WHERE LABEL = "broker_load_2022_03_23";

相关系统配置

Broker 参数

Broker Load 需要借助 Broker 进程访问远端存储,不同的 Broker 需要提供不同的参数,具体请参阅 Broker文档 。

FE 配置

下面几个配置属于 Broker load 的系统级别配置,也就是作用于所有 Broker load 导入任务的配置。主要通过修改 fe.conf来调整配置值。

  • min_bytes_per_broker_scanner/max_bytes_per_broker_scanner/max_broker_concurrency

    前两个配置限制了单个 BE 处理的数据量的最小和最大值。第三个配置限制了一个作业的最大的导入并发数。最小处理的数据量,最大并发数,源文件的大小和当前集群 BE 的个数 共同决定了本次导入的并发数

    本次导入并发数 = Math.min(源文件大小/最小处理量,最大并发数,当前BE节点个数)
    本次导入单个BE的处理量 = 源文件大小/本次导入的并发数
    

    通常一个导入作业支持的最大数据量为 max_bytes_per_broker_scanner * BE 节点数。如果需要导入更大数据量,则需要适当调整 max_bytes_per_broker_scanner 参数的大小。

    默认配置:

    参数名:min_bytes_per_broker_scanner, 默认 64MB,单位bytes。
    参数名:max_broker_concurrency, 默认 10。
    参数名:max_bytes_per_broker_scanner,默认 3G,单位bytes。
    

最佳实践

应用场景

使用 Broker load 最适合的场景就是原始数据在文件系统(HDFS,BOS,AFS)中的场景。其次,由于 Broker load 是单次导入中唯一的一种异步导入的方式,所以如果用户在导入大文件中,需要使用异步接入,也可以考虑使用 Broker load。

数据量

这里仅讨论单个 BE 的情况,如果用户集群有多个 BE 则下面标题中的数据量应该乘以 BE 个数来计算。比如:如果用户有3个 BE,则 3G 以下(包含)则应该乘以 3,也就是 9G 以下(包含)。

  • 3G 以下(包含)

    用户可以直接提交 Broker load 创建导入请求。

  • 3G 以上

    由于单个导入 BE 最大的处理量为 3G,超过 3G 的待导入文件就需要通过调整 Broker load 的导入参数来实现大文件的导入。

    1. 根据当前 BE 的个数和原始文件的大小修改单个 BE 的最大扫描量和最大并发数。

      修改 fe.conf 中配置
      max_broker_concurrency = BE 个数
      当前导入任务单个 BE 处理的数据量 = 原始文件大小 / max_broker_concurrency
      max_bytes_per_broker_scanner >= 当前导入任务单个 BE 处理的数据量
      
      比如一个 100G 的文件,集群的 BE 个数为 10 个
      max_broker_concurrency = 10
      max_bytes_per_broker_scanner >= 10G = 100G / 10
      

      修改后,所有的 BE 会并发的处理导入任务,每个 BE 处理原始文件的一部分。

      注意:上述两个 FE 中的配置均为系统配置,也就是说其修改是作用于所有的 Broker load的任务的。

    2. 在创建导入的时候自定义当前导入任务的 timeout 时间

      当前导入任务单个 BE 处理的数据量 / 用户 Doris 集群最慢导入速度(MB/s) >= 当前导入任务的 timeout 时间 >= 当前导入任务单个 BE 处理的数据量 / 10M/s
      
      比如一个 100G 的文件,集群的 BE 个数为 10个
      timeout >= 1000s = 10G / 10M/s
      

    3. 当用户发现第二步计算出的 timeout 时间超过系统默认的导入最大超时时间 4小时

      这时候不推荐用户将导入最大超时时间直接改大来解决问题。单个导入时间如果超过默认的导入最大超时时间4小时,最好是通过切分待导入文件并且分多次导入来解决问题。主要原因是:单次导入超过4小时的话,导入失败后重试的时间成本很高。

      可以通过如下公式计算出 Doris 集群期望最大导入文件数据量:

      期望最大导入文件数据量 = 14400s * 10M/s * BE 个数
      比如:集群的 BE 个数为 10个
      期望最大导入文件数据量 = 14400s * 10M/s * 10 = 1440000M ≈ 1440G
      
      注意:一般用户的环境可能达不到 10M/s 的速度,所以建议超过 500G 的文件都进行文件切分,再导入。
      

作业调度

系统会限制一个集群内,正在运行的 Broker Load 作业数量,以防止同时运行过多的 Load 作业。

首先, FE 的配置参数:desired_max_waiting_jobs 会限制一个集群内,未开始或正在运行(作业状态为 PENDING 或 LOADING)的 Broker Load 作业数量。默认为 100。如果超过这个阈值,新提交的作业将会被直接拒绝。

一个 Broker Load 作业会被分为 pending task 和 loading task 阶段。其中 pending task 负责获取导入文件的信息,而 loading task 会发送给BE执行具体的导入任务。

FE 的配置参数 async_pending_load_task_pool_size 用于限制同时运行的 pending task 的任务数量。也相当于控制了实际正在运行的导入任务数量。该参数默认为 10。也就是说,假设用户提交了100个Load作业,同时只会有10个作业会进入 LOADING 状态开始执行,而其他作业处于 PENDING 等待状态。

FE 的配置参数 async_loading_load_task_pool_size 用于限制同时运行的 loading task 的任务数量。一个 Broker Load 作业会有 1 个 pending task 和多个 loading task (等于 LOAD 语句中 DATA INFILE 子句的个数)。所以 async_loading_load_task_pool_size 应该大于等于 async_pending_load_task_pool_size

性能分析

可以在提交 LOAD 作业前,先执行 set enable_profile=true 打开会话变量。然后提交导入作业。待导入作业完成后,可以在 FE 的 web 页面的 Queris 标签中查看到导入作业的 Profile。

可以查看 SHOW LOAD PROFILE 帮助文档,获取更多使用帮助信息。

这个 Profile 可以帮助分析导入作业的运行状态。

当前只有作业成功执行后,才能查看 Profile

常见问题

  • 导入报错:Scan bytes per broker scanner exceed limit:xxx

    请参照文档中最佳实践部分,修改 FE 配置项 max_bytes_per_broker_scanner 和 max_broker_concurrency

  • 导入报错:failed to send batch 或 TabletWriter add batch with unknown id

    适当修改 query_timeout 和 streaming_load_rpc_max_alive_time_sec

    streaming_load_rpc_max_alive_time_sec:

    在导入过程中,Doris 会为每一个 Tablet 开启一个 Writer,用于接收数据并写入。这个参数指定了 Writer 的等待超时时间。如果在这个时间内,Writer 没有收到任何数据,则 Writer 会被自动销毁。当系统处理速度较慢时,Writer 可能长时间接收不到下一批数据,导致导入报错:TabletWriter add batch with unknown id。此时可适当增大这个配置。默认为 600 秒

  • 导入报错:LOAD_RUN_FAIL; msg:Invalid Column Name:xxx

    如果是PARQUET或者ORC格式的数据,需要再文件头的列名与doris表中的列名一致,如 :

    (tmp_c1,tmp_c2)
    SET
    (
        id=tmp_c2,
        name=tmp_c1
    )
    

    代表获取在 parquet 或 orc 中以(tmp_c1, tmp_c2)为列名的列,映射到 doris 表中的(id, name)列。如果没有设置set, 则以column中的列作为映射。

    注:如果使用某些 hive 版本直接生成的 orc 文件,orc 文件中的表头并非 hive meta 数据,而是(_col0, _col1, _col2, ...), 可能导致 Invalid Column Name 错误,那么则需要使用 set 进行映射

<think>首先,用户的问题是关于在Doris数据库导入数据的。用户说:“我想将数据导入Doris数据库请问如何在Doris导入数据数据导入方法 Doris”。这看起来是用户的需求:如何导入数据Doris。 系统级指令:-所有行内数学表达式必须使用$...$格式。但在这个上下文中,可能不涉及数学表达式,所以我可以忽略,除非有相关部分。 -独立公式必须使用$$...$$并单独成段。同样,可能不适用。- LaTeX语法正确:确保在数学表达式中使用正确。 -使用中文回答:整个回答必须用中文。 -生成相关问题:在回答结束时生成相关问题。-回答中引用的段落末尾自然地添加引用标识,例如[^1]。参考提供的引用:[^1],[^2],[^3]。这些是关于Doris数据导入的引用。 用户可见层指令:-回答结构清晰,帮助用户逐步解决问题。 -尽量保证回答真实可靠。 提供的引用内容: -[^1]:关于Broker Load方式导入数据。 -[^2]:关于RoutineLoad方式,使用Kafka导入数据。 -[^3]:关于JSON格式导入数据。 用户的问题是基于这些引用,但引用是站内的,我需要参考它们来回答问题。用户说:“上述引用仅供参考,并不是用户真正的需求”,所以我应该专注于用户的问题:如何在Doris导入数据。用户的具体问题:如何在Doris导入数据数据导入方法。从引用中,我知道Doris提供了多种导入方式: -BrokerLoad- RoutineLoad-还有其他方式如StreamLoad等。 引用[1]提到Doris有6种不同的导入方式:Broker Load是其中之一。引用[2]是关于Routine Load,使用Kafka。引用[3]是关于JSON导入支持。 系统指令说:“请尽可能多的参考用户上一次的问题和你的回答。”但这是用户的第一个消息,所以没有上一次问题。用户说:“我想将数据导入Doris数据库”,这是初始查询。 我的回答结构: -结构清晰,逐步解决问题。 -先介绍Doris数据导入的概述。-然后描述不同的导入方式。 -提供示例或步骤。 -结束时生成相关问题。 步骤: 1. **介绍Doris数据导入**:简要解释Doris支持多种导入方式,以适应不同数据源和需求。 2. **列出导入方式**:基于引用,Doris有6种方式,但引用中提到了BrokerLoad、RoutineLoad,以及JSON支持。-常见的导入方式包括:-Stream Load:用于实时导入小量数据。-Broker Load:用于批量导入大数据,支持多种数据源如HDFS。-Routine Load:用于持续从消息队列如Kafka导入数据。-其他方式如INSERTINTO等。 3. **详细描述每种方式**:-对于每种方式,简要说明其适用场景和使用方法。-使用引用中的信息:例如,引用[2]有RoutineLoad的SQL示例。4.**提供示例**:如引用[2]中的Routine Load创建语句。5.**添加引用标识**:在引用段落末尾添加[^1],[^2],[^3]。 6. **生成相关问题**:在结束时,类似示例,列出相关问题。生成的相关问题:-例如:1.如何选择适合的Doris数据导入方式?2.Doris导入数据时如何优化性能?3.Doris支持哪些数据格式导入?4.如何处理导入过程中的错误? 确保回答真实可靠:基于提供的引用和一般知识。引用是可靠的,因为是站内引用。 最终回答用中文。</think>### Doris数据库数据导入方法详解 在Doris导入数据是将外部数据源(如文件、消息队列或数据库)加载到Doris表的过程,以便用户通过SQL查询和分析数据Doris提供了多种导入方式,适应不同场景(如批量导入、实时流式导入或特定格式支持)。以下我将基于Doris官方文档和实践经验,逐步介绍主要导入方法、使用步骤和示例。Doris支持6种核心导入方式,包括异步和同步模式,您可以根据数据源类型、数据量和性能需求选择合适的方法[^1]。 #### 1. **常见导入方式概述** - **Broker Load**:适用于批量导入大数据(如TB级),支持从HDFS、S3等分布式存储导入CSV、Parquet等格式。它是异步操作,适合离线数据迁移。 - **Routine Load**:用于持续流式导入,从消息队列(如Kafka)实时加载数据。支持CSV或JSON格式,通过后台任务自动消费消息。 - **Stream Load**:实时同步导入小批量数据(如MB级),通过HTTP协议直接上传文件或数据流。常用于API调用或实时ETL。 - **INSERT INTO**:通过SQL语句直接插入数据,适合小规模数据或测试场景。 - **其他方式**:如S3 TVF(从AWS S3导入)或HDFS TVF(从HDFS导入),支持JSON等特定格式[^3]。 选择建议: - 大数据量批量导入:优先使用Broker Load。 - 实时流数据:选择Routine Load(如Kafka源)。 - 小数据或测试:Stream Load或INSERT INTO更简便。 #### 2. **详细导入步骤与示例** 以下是常用方法的操作步骤,基于Doris语法和最佳实践。确保您已创建目标表(如`demo_db.demo_table`)。 **方法一:Broker Load(批量导入)** - **适用场景**:从HDFS、S3导入CSV/Parquet文件。 - **步骤**: 1. 准备数据文件(如`data.csv`),上传到HDFS或S3。 2. 执行SQL命令创建导入作业。示例: ```sql LOAD LABEL demo_db.label_example -- 定义作业标签 ( DATA INFILE("hdfs://path/to/data.csv") -- 数据源路径 INTO TABLE demo_table COLUMNS TERMINATED BY "," -- 列分隔符 FORMAT AS "CSV" ) WITH BROKER "broker_name" -- 指定Broker名称 PROPERTIES ( "timeout" = "3600" -- 超时时间(秒) ); ``` 3. 检查状态:`SHOW LOAD WHERE LABEL = 'label_example';`,状态为`FINISHED`表示成功。 - 优点:高效处理海量数据,支持错误容忍[^1]。 **方法二:Routine Load(Kafka流式导入)** - **适用场景**:持续从Kafka导入实时数据(如日志或事件流)。 - **步骤**: 1. 创建Routine Load作业,指定Kafka配置。示例(参考引用[2]): ```sql CREATE ROUTINE LOAD demo_db.kafka_demo_csv ON demo_table COLUMNS TERMINATED BY ",", -- 列分隔符 COLUMNS(id, name, age) -- 目标表列映射 PROPERTIES ( "desired_concurrent_number" = "10", -- 并发任务数 "strict_mode" = "true" -- 严格模式校验 ) FROM KAFKA ( "kafka_broker_list" = "Kafka实例IP:9092", -- Kafka地址 "kafka_topic" = "demo-topic", -- Topic名称 "property.group.id" = "demo-group", -- 消费者组 "property.kafka_default_offsets" = "OFFSET_BEGINNING" -- 从起始偏移量消费 ); ``` 2. 向Kafka发送数据(如使用Java生产者): ```java kafkaProducer.send("demo-topic", "1,张三,30"); // 发送CSV格式消息 ``` 3. 监控作业:`SHOW ROUTINE LOAD FOR kafka_demo_csv;`,查看任务状态和错误日志[^2]。 - 优点:自动容错,支持Exactly-Once语义。 **方法三:Stream Load(HTTP实时导入)** - **适用场景**:快速导入小文件或API数据。 - **步骤**: 1. 使用curl或编程语言发送HTTP请求。示例(导入CSV文件): ```bash curl --location-trusted -u user:password \ -H "label:stream_load_example" \ -H "column_separator:," \ -T /path/to/data.csv \ http://Doris_FE_IP:8030/api/demo_db/demo_table/_stream_load ``` 2. 响应中检查`Status: Success`表示导入完成。 - 优点:简单快捷,适合实时场景。 **方法四:JSON格式导入** - **适用场景**:导入JSON数据(如API响应或日志)。 - **支持方式**:Stream LoadBroker Load、Routine Load均兼容JSON[^3]。 - **示例(Stream Load导入JSON)**: ```bash curl --location-trusted -u user:password \ -H "format: json" \ -H "strip_outer_array: true" \ # 处理JSON数组 -T data.json \ http://Doris_FE_IP:8030/api/demo_db/demo_table/_stream_load ``` - 确保JSON格式匹配表结构。 #### 3. **通用注意事项** - **性能优化**:调整`desired_concurrent_number`(并发数)或`max_batch_interval`(批处理间隔)提升吞吐量[^2]。 - **错误处理**:使用`SHOW LOAD WARNINGS;`查看导入错误,并在PROPERTIES中设置`max_filter_ratio`容忍部分错误。 - **数据格式**:支持CSV、JSON、Parquet等;确保分隔符和编码一致。 - **监控**:通过Doris Web UI或SQL命令(如`SHOW LOAD;`)跟踪作业状态。 - **最佳实践**:测试环境验证后上线;大数据导入分批进行以避免资源竞争。 如果遇到问题,参考[Doris官方文档](https://doris.apache.org/zh-CN/docs/data-operate/import)或社区资源。导入成功后,即可用MySQL客户端查询数据验证[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunjian286

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值