全量数据导出
所有文档
menu
没有找到结果,请重新输入

PALO

全量数据导出

全量数据导出(Export)是 Doris 提供的一种将数据导出的功能。

该功能可以将用户指定的表或分区的数据,以文本的格式,通过 Broker 进程导出到远端存储上,如 HDFS/BOS 等。

本文档主要介绍 Export 功能的基本使用方式。

功能介绍

Export 功能是一个异步执行的作业。用户通过 Export 语句指定需要导出的表或者表中某些分区后,系统将生成分布式数据扫描计划,由多个 Compute Node 节点共同完成数据扫描读取的工作,并通过 Broker 进程写到远端存储上。

导出功能的最小粒度是表的分区。

目前的导出功能较为简单,仅支持对表进行全列导出,不支持对表中列进行映射、转换和过滤操作。

提交导出作业

通过如下语句提交一个导出作业

EXPORT TABLE example_tbl
PARTITION(p1, p2)
TO "bos://my_bucket/export/"
WITH BROKER "bos"
(
    "bos_endpoint" = "http://bj.bcebos.com",
    "bos_accesskey" = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bos_secret_accesskey"="yyyyyyyyyyyyyyyyyyyy"
);

该语句指定将 example_tbl 表的 p1p2 两个分区导出到 BOS 的 bos://my_bucket/export/ 目录下。

导出命令的详细帮助,请参阅 EXPORT

导出作业的执行

导出作业会生成多个查询计划,每个查询计划负责扫描一部分数据分片(Tablet)。

每个查询计划默认扫描 5 个 Tablet。即假设一共 100 个 Tablet,则会生成 20 个查询计划。

用户也可以在提交作业时,通过作业属性 tablet_num_per_task 指定这个数值。

一个作业的多个查询计划顺序执行。

一个查询计划扫描多个分片,将读取的数据以行的形式组织,每 1024 行为一个批次,调用 Broker 写入到远端存储上。

查询计划遇到错误会整体自动重试 3 次。如果一个查询计划重试 3 次依然失败,则整个作业失败。

导出文件的结构

导出作业会首先在指定的远端存储的路径中,建立一个名为 __doris_export_tmp_12345 的临时目录(其中 12345 为作业 id)。

导出的数据首先会写入这个临时目录。每个查询计划会生成一个文件,文件名示例:

export-data-c69fcf2b6db5420f-a96b94c1ff8bccef-1561453713822

其中 c69fcf2b6db5420f-a96b94c1ff8bccef 为查询计划的 ID。1561453713822 为文件生成的时间戳。

当所有数据都导出后,Doris 会将这些文件移动到用户指定的路径中。

查看作业进度

提交作业后,可以通过 SHOW EXPORT 命令查询导入作业状态。结果举例如下:

     JobId: 14008
     State: FINISHED
  Progress: 100%
  TaskInfo: {"partitions":["p1", "p2"],"exec mem limit":2147483648,"column separator":",","line delimiter":"\n","tablet num":1,"broker":"hdfs","coord num":1,"db":"default_cluster:db1","tbl":"tbl3"}
      Path: bos://my_bucket/export/
CreateTime: 2019-06-25 17:08:24
 StartTime: 2019-06-25 17:08:28
FinishTime: 2019-06-25 17:08:34
   Timeout: 3600
  ErrorMsg: N/A

当作业状态为 FINISHED 时,即表示导出完成。

关于 SHOW EXPORT 的详细帮助,请参阅:SHOW EXPORT

导出总览导出查询结果集