Doris导出指定的表或分区的数据到HDFS

目录

基本原理

使用实例

1、将testTbl表中的所有数据导出到hdfs上

2、将testTbl表中的分区p1,p2导出到hdfs上,broker使用kerberos 认证方式,同时配置 namenode HA

3、将testTbl表中的所有数据导出到hdfs上,以","作为列分隔符

注意事项


Export是Doris提供的将数据导出的功能,可以将用户指定的表或分区的数据,以文本的格式,通过 Broker 进程导出到远端存储上,如 HDFS/BOS 等(暂不支持导出到本地)。

可以使用Mysql Client 运行 HELP Export 查看官方帮助信息。

基本原理

用户提交一个 Export 作业后,Doris 会统计这个作业涉及的所有 Tablet,然后对这些 Tablet 进行分组,每组生成一个特殊的查询计划。该查询计划会读取所包含的 Tablet 上的数据,然后通过 Broker 将数据写到远端存储指定的路径中。

用户提交一个Export 作业到 FE后,FE的调度器会通过两个阶段来执行:

  • PENDING:生成 ExportPendingTask,向 BE 发送 snapshot 命令,对所有涉及到的 Tablet 做一个快照,并生成多个查询计划(一个查询计划会扫描多个分片,将读取的数据以行的形式组织,每 1024 行为一个 batch,调用 Broker 写入到远端存储上)。
  • EXPORTING:FE 生成 ExportExporingTask,开始执行查询计划。

查询计划在执行时,会在指定的远端存储的路径中,临时目录(tmp),导出的数据首先会写入这个临时目录。每个查询计划会生成一个文件,当所有数据都导出后,Doris 会将这些文件 rename 到用户指定的路径中。

使用实例

语法:

EXPORT TABLE table_name
[PARTITION (p1[,p2])]
TO export_path
[opt_properties]
broker;

说明:

  • table_name:当前要导出的表的表名,目前支持engine为olap和mysql的表的导出。
  • partition:可以只导出指定表的某些指定分区。
  • export_path:导出的路径,需为目录,目前不能导出到本地,需要导出到broker。
  • opt_properties:用于指定一些特殊参数。
    • 语法:[PROPERTIES ("key"="value", ...)]
    • 参数:column_separator:指定导出的列分隔符,默认为\t。
    • 参数:line_delimiter:指定导出的行分隔符,默认为\n。
  • broker:用于指定导出使用的broke
    • 语法:WITH BROKER broker_name ("key"="value"[,...])

1、将testTbl表中的所有数据导出到hdfs上

EXPORT TABLE testTbl 
TO "hdfs://hdfs_host:port/a/b/c" 
WITH BROKER "broker_name" (
"username"="xxx", 
"password"="yyy"
);

2、将testTbl表中的分区p1,p2导出到hdfs上,broker使用kerberos 认证方式,同时配置 namenode HA

EXPORT TABLE testTbl 
    PARTITION (p20200101)
    TO "hdfs://hadoop/user/platform/miuiads/stat_event_cube_bak2017/date=20200101"
    WITH BROKER "broker1"(
    "hadoop.security.authentication"="kerberos",
    "kerberos_principal"="",
    "kerberos_keytab"="",
    "dfs.nameservices"="",
    "dfs.ha.namenodes.zjyprc-hadoop-5"="",
    "dfs.namenode.rpc-address.zjyprc-hadoop-5.host0"="",
    "dfs.namenode.rpc-address.zjyprc-hadoop-5.host1"="",
    "dfs.client.failover.proxy.provider"="org.apache.hadoop.hdfs.server.namenode.ha.ZkConfiguredFailoverProxyProvider"
    );

3、将testTbl表中的所有数据导出到hdfs上,以","作为列分隔符

EXPORT TABLE testTbl 
TO "hdfs://hdfs_host:port/a/b/c" 
PROPERTIES ("column_separator"=",") 
WITH BROKER "broker_name" (
"username"="xxx", 
"password"="yyy"
);

提交作业后,可以通过 SHOW EXPORT 命令查询导入作业状态。

注意事项

  • 不建议一次性导出大量数据,一个 Export 作业建议的导出数据量最大在几十 GB,过大的导出会导致更多的垃圾文件和更高的重试成本,如果表数据量过大,建议按照分区导出。
  • 如果 Export 作业运行失败,在远端存储中产生的临时目录tmp,以及已经生成的文件不会被删除,需要用户手动删除。
  • 如果 Export 作业运行成功,在远端存储中产生的tmp目录,根据远端存储的文件系统语义,可能会保留,也可能会被清除,如果该目录没有被清除,需要手动清除
  • Export 作业只会导出 Base 表的数据,不会导出 Rollup Index 的数据。
  • Export 作业会扫描数据,占用 IO 资源,可能会影响系统的查询延迟。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值