持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情
案例演示
| 操作步骤 | 说明 |
|---|---|
| 1 | 查询site_visit表数据,将site_visit表的数据导入到hdfs中 |
| select * from site_visit ; | |
| 2 | 执行导出作业 |
| EXPORT TABLE test_db . site_visitTO "hdfs://node1:8020/datas/output" WITH BROKER "broker_name" ("username"="root" , "password"="123456"); | |
| 3 | 查看导出作业 |
其他导出案例参考
-将testTbl表中的分区p1,p2导出到hdfs上,broker使用kerberos 认证方式,同时配置 namenode HA
| EXPORT TABLE testTbl PARTITION ( p20200101 ) TO "hdfs://my_cluster/user/platform/miuiads/stat_event_cube_bak2017/date=20200101" WITH BROKER "broker1" ( "hadoop.security.authentication"="kerberos" , "kerberos_principal"="" , "kerberos_keytab"="" , "dfs.nameservices"="my_cluster" , "dfs.ha.namenodes.my_cluster"="nn1,nn2" , "dfs.namenode.rpc-address.my_cluster.nn1"="node1:8020" , "dfs.namenode.rpc-address.my_cluster.nn2"="node2:8020" , "dfs.client.failover.proxy.provider"="org.apache.hadoop.hdfs.server.namenode.ha.ZkConfiguredFailoverProxyProvider"); |
|---|
l 将testTbl表中的所有数据导出到hdfs上,以","作为列分隔符
| EXPORT TABLE testTblTO "hdfs://hdfs_host:port/a/b/c" PROPERTIES ( "column_separator"="," ) WITH BROKER "broker_name" ("username"="xxx" , "password"="yyy"); |
|---|
注意事项
-
不建议一次性导出大量数据,一个 Export 作业建议的导出数据量最大在几十 GB,过大的导出会导致更多的垃圾文件和更高的重试成本,如果表数据量过大,建议按照分区导出。
-
如果 Export 作业运行失败,在远端存储中产生的临时目录tmp,以及已经生成的文件不会被删除,需要用户手动删除。
-
如果 Export 作业运行成功,在远端存储中产生的tmp目录,根据远端存储的文件系统语义,可能会保留,也可能会被清除,如果该目录没有被清除,需要手动清除。
-
Export 作业只会导出 Base 表的数据,不会导出 Rollup Index 的数据。
-
Export 作业会扫描数据,占用 IO 资源,可能会影响系统的查询延迟。
Colocation Join
Colocation Join 是在 Doris 0.9 版本中引入的新功能。旨在为某些 Join 查询提供本地性优化,来减少数据在节点间的传输耗时,加速查询。
原理
Colocation Join 功能,是将一组拥有相同 CGS 的 Table 组成一个 CG。并保证这些 Table 对应的数据分片会落在同一个 BE 节点上。使得当 CG 内的表进行分桶列上的 Join 操作时,可以通过直接进行本地数据 Join,减少数据在节点间的传输耗时。
一个表的数据,最终会根据分桶列值 Hash、对桶数取模的后落在某一个分桶内。假设一个 Table 的分桶数为 8,则共有 [0, 1, 2, 3, 4, 5, 6, 7] 8 个分桶(Bucket),我们称这样一个序列为一个 BucketsSequence。每个 Bucket 内会有一个或多个数据分片(Tablet)。当表为单分区表时,一个 Bucket 内仅有一个 Tablet。如果是多分区表,则会有多个。
使用限制:
-
建表时两张表的分桶列和数量需要完全一致,并且桶的个数也需要一致
-
副本数,两张表的所有分区和副本数需要一致