Doris 数据导入-Mini Load 通过http进行批量数据导入

目录

 

Doris导入方式及链接

Doris 目前支持以下4种导入方式:

Doris 数据导入-Mini Load 通过http进行批量数据导入

数据导入样例

1. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是defalut_cluster中的)

2. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是test_cluster中的)。超时时间是 3600 秒

3. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率(用户是defalut_cluster中的)

4. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名(用户是defalut_cluster中的)

5. 使用streaming方式导入(用户是defalut_cluster中的)

6. 导入含有HLL列的表,可以是表中的列或者数据中的列用于生成HLL列(用户是defalut_cluster中的)

7. 查看提交后的导入情况


Doris导入方式及链接

Doris 目前支持以下4种导入方式:

  1.  Hadoop Load:基于 MR 进行 ETL 的导入。(仅适用于百度内部环境)
  2.  Broker Load:使用 broker 进行进行数据导入。(链接:Doris 数据导入-Broker Load)
  3.  Mini Load:通过 http 协议上传文件进行批量数据导入。(链接:Doris 数据导入-Mini Load)
  4.  Stream Load:通过 http 协议进行流式数据导入。(链接:Doris 数据导入- Stream Load)

Doris 数据导入-Mini Load 通过http进行批量数据导入

使用Mysql Client 运行 help mini load 做的笔记。

MINI LOAD 是 Palo 新提供的一种导入方式,这种导入方式可以使用户不依赖 Hadoop,从而完成导入方式。
此种导入方式提交任务并不是通过 MySQL 客户端,而是通过 http 协议来完成的。用户通过 http 协议将导入描述,
数据一同发送给 Palo,Palo 在接收任务成功后,会立即返回给用户成功信息,但是此时,数据并未真正导入。
用户需要通过 'SHOW LOAD' 命令来查看具体的导入结果。

导入:

curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table}/_load?label=xxx

查看导入状态

curl -u user:passwd http://host:port/api/{db}/_load_info?label=xxx

HTTP协议相关说明

权限认证           

当前 Palo 使用 http 的 Basic 方式权限认证。所以在导入的时候需要指定用户名密码
        这种方式是明文传递密码的,暂不支持加密传输。

Expect             

Palo需要发送过来的 http 请求带有 'Expect' 头部信息,内容为 '100-continue'。
        为什么呢?因为我们需要将请求进行 redirect,那么必须在传输数据内容之前,
        这样可以避免造成数据的多次传输,从而提高效率。

Content-Length     

Palo 需要在发送请求时带有 'Content-Length' 这个头部信息。如果发送的内容比
       'Content-Length' 要少,那么 Palo 认为传输出现问题,则提交此次任务失败。
       NOTE: 如果,发送的数据比 'Content-Length' 要多,那么 Palo 只读取 'Content-Length'
       长度的内容,并进行导入

参数说明:

参数 说明
user 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name
label 用于指定这一批次导入的 label,用于后期进行作业状态查询等。这个参数是必须传入的
columns 用于描述导入文件中对应的列名字。
如果不传入,那么认为文件中的列顺序与建表的顺序一致,指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
column_separator 用于指定列与列之间的分隔符,默认的为'\t'
OTE: 需要进行url编码,譬如
需要指定'\t'为分隔符,那么应该传入'column_separator=%09'
需要指定'\x01'为分隔符,那么应该传入'column_separator=%01'
需要指定','为分隔符,那么应该传入'column_separator=%2c'
max_filter_ratio 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤,自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
timeout 指定 load 作业的超时时间,单位是秒。当load执行时间超过该阈值时,会自动取消。默认超时时间是 86400 秒。建议指定 timeout 时间小于 86400 秒。
hll 用于指定数据里面和表里面的HLL列的对应关系,表中的列和数据里面指定的列
(如果不指定columns,则数据列面的列也可以是表里面的其它非HLL列)通过","分割
指定多个hll列使用“:”分割,例如: 'hll1,cuid:hll2,device'

 

注意:

  1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作,建议导入数据量不要超过 1 GB
  2. 当前无法使用 `curl -T "{file1, file2}"` 这样的方式提交多个文件,因为curl是将其拆成多个请求发送的,多个请求不能共用一个label号,所以无法使用
  3. 支持类似 streaming 的方式使用 curl 来向 palo 中导入数据,但是,只有等这个 streaming 结束后 palo才会发生真实的导入行为,这中方式数据量也不能过大
  4. 当使用 curl 命令行导入时,需要在 & 前加入 \ 转义,否则参数信息会丢失

数据导入样例

1. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是defalut_cluster中的)

 curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123

2. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是test_cluster中的)。超时时间是 3600 秒

curl --location-trusted -u root@test_cluster:root -T testData http://fe.host:port/api/testDb/testTbl/_load?label=123&timeout=3600

3. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率(用户是defalut_cluster中的)

curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2

4. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名(用户是defalut_cluster中的)

 curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&columns=k1,k2,k3

5. 使用streaming方式导入(用户是defalut_cluster中的)

seq 1 10 | awk '{OFS="\t"}{print $1, $1 * 10}' | curl --location-trusted -u root -T - http://host:port/api/testDb/testTbl/_load?label=123

6. 导入含有HLL列的表,可以是表中的列或者数据中的列用于生成HLL列(用户是defalut_cluster中的)

curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&hll=hll_column1,k1:hll_column2,k2
curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
          \&hll=hll_column1,tmp_k4:hll_column2,tmp_k5\&columns=k1,k2,k3,tmp_k4,tmp_k5

7. 查看提交后的导入情况

curl -u root http://host:port/api/testDb/_load_info?label=123

 

 

你可能感兴趣的:(Doris,Doris,Palo,百度,Apache)