文档首页/ MapReduce服务 MRS/ 组件操作指南(LTS版)/ 使用Doris/ Doris数据导入/ 使用Streamloader工具导入本地数据至Doris
更新时间:2025-12-10 GMT+08:00
分享

使用Streamloader工具导入本地数据至Doris

Streamloader是一款用于将本地数据导入至Doris数据库的客户端工具。相较于直接使用Rest API的单并发导入,该工具支持多并发导入功能,降低了导入大量数据的耗时。Streamloader工具支持以下功能:

  • 并发导入:实现了Stream Load的多并发导入,可以通过workers参数设置导入并发数。
  • 多文件导入:一次导入操作可以同时导入多个文件及目录,支持设置通配符,并且会自动递归获取文件夹下的所有文件。
  • 断点续传:在导入过程中可能出现部分失败的情况,支持根据日志提示的命令,手动重新执行对应的命令在失败点处继续进行传输。
  • 自动重传:在导入任务出现失败的情况后,无需手动重传,Streamloader工具会自动重传默认的次数,如果仍然不成功,则打印出手动重传的命令。
  • 该章节仅适用于MRS 3.6.0-LTS及之后版本。
  • 仅支持导入本地文件系统的文件,不支持导入远端文件系统中的文件(例如HDFS)。
  • 仅支持导入Text格式的文件,不支持导入RCFile、ORC、Parquet、JSON等格式的文件。

前提条件

  • 已创建包含Doris服务的集群,集群内各服务运行正常。
  • 创建具有Doris管理员权限的用户。

    在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。用户创建后,需使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。

使用Streamloader工具导入本地数据至Doris

  1. 登录FusionInsight Manager页面,选择“集群 > 服务 > Doris > 实例”,查看并记录任一Doris实例的业务IP地址。
  2. root用户登录主OMS节点,执行以下命令获取集群安装目录:

    su - omm

    echo ${BIGDATA_HOME}

    例如,集群安装目录为:

    /opt/Bigdata

  3. 使用rootomm用户登录1查看的节点,执行以下命令切换至Doris客户端所在目录:

    cd 集群安装目录/FusionInsight_Doris_*/install/FusionInsight-Doris-2.1.7/doris-be/streamloader

  4. 执行以下命令导入文件数据:

    • 导入多个文件:

      ./doris-streamloader --source_file='file0.csv,file1.csv,file2.csv' --url='${http_mode}://任一BE实例的IP地址:webserver_port' --header='column_separator:,?columns:col1,col2' --db='testdb' --table='testtbl' --request_service='BE' --u='doris_user' --p='passwd'

      例如,数据导入成功后,回显信息如下:

      图1 导入多个文件数据成功
    • 导入多个目录下的文件:

      ./doris-streamloader --source_file='dir1,dir2,dir3' --url='${http_mode}://任一FE实例的IP地址:访问FE的HTTPS或HTTP端口' --header='column_separator:,?columns:col1,col2' --db='testdb' --table='testtbl' --u='doris_user' --p='passwd'

    • 集群已启用Kerberos认证(安全模式)${http_mode}值为“https”,访问FE的端口为“https_port”配置项的值;集群未启用Kerberos认证(普通模式)${http_mode}值为“http”,访问FE的端口为“http_port”配置项的值。
    • webserver_port为BE的HTTP Server服务端口,可在Manager界面选择“集群 > 服务 > Doris > 配置”,搜索“webserver_port”参数查看。
    • Doris BE或FE实例IP地址可通过登录MRS集群的Manager界面,选择“集群 > 服务 > Doris > 实例”,查看任一BE或FE实例的业务IP地址。
    • 如果通过BE HTTP服务导入数据,则必须使用参数--request_service="BE"
    • 更多导入参数介绍请参见表1

参数说明

表1 Streamloader导入参数说明

参数

参数说明

默认值

配置建议

--source_file

待导入的源数据,可以是目录,也可以是文件,多个文件或目录以英文逗号分隔。

-

-

--url

待请求HTTP服务的IP和端口。

-

-

--header

HTTP请求的header参数。

-

详细介绍请参见表1

--db

待导入数据的Doris数据库名称。

-

-

--table

待导入数据的Doris表名称。

-

-

--u

连接Doris的用户名。

root

-

--p

连接Doris的用户密码。

空字符串

-

--request_service

调用的Stream Loader Rest接口所属的服务,值为FE或BE。

FE

Stream Loader Rest接口选择为BE时,必须显示指定该参数值为BE,否则可能会导入数据失败。

--compress

导入数据是否在HTTP传输时进行压缩。

false

保持默认,数据压缩再解压会增加工具和Doris BE的CPU压力,所以仅在数据源所在机器网络带宽瓶颈时开启数据压缩功能。

--timeout

向Doris发送HTTP请求的超时时间,单位为秒。

60*60*10

保持默认。

--batch

文件批量读取和发送的粒度,单位为行。

4096

保持默认。

--batch_byte

文件批量读取和发送的粒度,单位为byte

943718400(900MB)

保持默认。

--workers

导入的并发数。

0

该参数设置为“0”时表示自动模式,会根据导入数据的大小、磁盘的吞吐量、Stream Load导入速度计算相应的值。也可以根据集群的性能手动设置,建议不要超过10。

--disk_throughput

磁盘的吞吐量,单位为MB/s。

800

通常保持默认即可,该值参与--workers的自动推算过程。

如果希望通过工具能计算出一个适当的workers数,可以根据实际磁盘吞吐设置。

--streamload_throughput

Stream Load导入实际的吞吐大小,单位为MB/s。

100

通常保持默认即可。该值参与--workers的自动推算过程。

如果希望通过工具能计算出一个适当的workers 数,可以设置实测的 Stream Load的吞吐,计算公式为:

(LoadBytes*1000)/(LoadTimeMs*1024*1024)

--max_byte_per_task

每个导入任务数据量的最大大小,超过该值剩下的数据会被拆分到一个新的导入任务中。

9663676416

建议设置一个较大的值来减少导入的版本数。但如果遇到“body exceed max size” 错误,且不想调整“streaming_load_max_mb” 参数(需重启BE实例),或是遇到“-238 TOO MANY SEGMENT”错误,可以临时调小该配置的值。

--check_utf8

是否对导入数据的编码进行检查:

  • false:不做编码检查直接将原始数据导入。
  • true:对数据中非UTF-8编码的字符用�进行替代。

true

保持默认。

--debug

是否打印Debug日志。

false

保持默认。

--auto_retry

自动重传失败的worker序号和task序号的列表。

空字符串

仅导入失败重传时使用,正常导入无需关注。

导入任务失败时会提示具体参数内容,复制执行即可。例如,如果--auto_retry="1,1,2,1",则表示需要重传的task为第一个worker的第一个 task和第二个worker的第一个task。

--auto_retry_times

自动重传的次数。

3

保持默认,如果不需要导入任务失败后重传,则需把该参数值设置为“0”。

--auto_retry_interval

自动重传的时间间隔。

60

保持默认,如果Doris因故障导致导入任务失败,建议根据Doris实际重启的时间间隔来设置该参数值。

--log_filename

日志存储的位置

""

默认将日志打印到控制台上,如果要将日志打印到日志文件中,可以设置存储日志文件的路径,例如

--log_filename = "/var/log"

相关文档