6.4 数据导出到Tair

数据从HybridDB导出到Tair中需要如下四个步骤:

  • 准备Tair环境,拿到configId和namespace
  • 在HybridDB中建立导出数据的真实存储表
  • 在HybridDB中建立一张外表映射到Tair
  • 调用Insert into select来完成数据导出

举例如下:

1)准备Tair环境

申请到Tair环境后可在泰斗页面找到相应的configId和namespace

2)在HybridDB中创建一张真实数据表

这一步是创建目标表,用于作为导出数据的源头表

CREATE TABLE IF NOT EXISTS hybriddb_export_tair_test
(
uid string,
c1 int,
c2 bigint,
other string
)
DISTRIBUTE BY HASH(uid)
INDEX_ALL='Y'
ENGINE='CSTORE'

3)在HybridDB中创建一张外部映射表

这一步的作用是建立映射表,用于告诉HybridDB如何写入Tair数据

CREATE TABLE IF NOT EXISTS export_tair_test_external_table
(
uid string,
c1 int,
c2 bigint,
other string
)
ENGINE='TAIR'
TABLE_PROPERTIES='{
"config_id":"XXXXX",
"namespace":"XXXX",
"key_columns":"uid, c1",
"key_delimiter":";",
"value_columns":"c2, other",
"value_delimiter":"|"
}'

上表定义中

  • ENGINE=TAIR用于表明该表是外部表,存储引擎是外部的TAIR

  • TABLE_PROPERTIES用于告诉HybridDB如何访问oss中的源头数据

    • config_id:Tair的configId。
    • namespace: 将要写入的namespace
    • key_columns: 将要映射为Tair的key的字段
    • key_delimiter: 映射为Tair的key的字段的分隔符
    • value_columns: 将要映射为Tair的value的字段
    • value_delimiter: 映射为Tair的value的字段的分隔符

以上表为例,假设hybriddb_export_tair_test表中数据为

| uid  |  c1  |  c2  | other  |
|------|------|------|---------
| 001  |  1   |  2   | other1 |
| 002  |  3   |  4   | other2 |

导出到 export_tair_test_external_table 后数据为

|  uid    |    c1     |
|---------|-----------|
| 001;1   | 2|other1  |
| 002;3   | 4|other2  |

4)执行sql语句开始导出

  • 实时ETL导入,实时可见

    insert into export_tair_test_external_table
    select * from hybriddb_export_tair_test
    

注意事项

  1. 要求两张表的DDL定义完全一致(HybridDB数据表、HybridDB外表)
  2. 目前只支持导出到Tair,不支持从Tair导入(Tair无法Scan)。不支持overwrite导出(大部分Tair引擎不支持数据Truncate)
  3. 公有云VPC网络不支持这种外表方式导入,需要用户自己借助其他方式完成
  4. 这里导入导出都是同步模式,发起导入的mysql client连接需要一直保持,如需异步提交请参考6.7节

results matching ""

    No results matching ""