RDS全量导入

更新时间:
复制 MD 格式

本文主要介绍在HBase中如何进行RDS全量导入。

注意事项

RDS全量导入功能于2023310日下线。2023310日后购买的LTS将无法使用RDS全量导入功能,2023310日前购买的LTS仍可正常使用此功能。

前提条件

  • LTS的购买时间在20230310日之前。

  • 已购买LTS数据迁移同步服务,配置LTS操作页面账户密码。
  • 已连接LTSHBase迁移集群、RDS实例的网络。
  • 已添加HBase集群数据源或者Phoenix数据源。
  • 已添加RDS数据源。

适用场景

HBase
  • 自建HBase1.x、2.x。
  • EMR HBase。
  • 标准版云HBase、增强版云HBase(集群版本)。
Mysql
  • 自建Mysql。
  • RDS for Mysql。

任务创建

  1. 登录HBase控制台,进入LTS操作页面,在左侧导航栏中选择导入Lindorm/HBase > RDS全量数据导入
  2. 单击创建迁移任务,设置RDS数据源目标数据源(HBase、Phoenix),输入需要迁移的表Mapping信息。

    页面包含以下配置项:

    • 通道名:输入迁移任务名称,如 job1

    • RDS数据源:选择已添加的 RDS 数据源。

    • 目标数据源(HBase、Phoenix):选择目标 HBase 实例。

    • 表映射:以 JSON 格式配置,reader 部分通过多条 querySql 实现数据分片(如按 ID 范围拆分),writer 部分通过 columns 定义 HBase 列族与列的映射关系,支持 concat 等表达式。

    配置完成后单击创建同步通道

  3. 查看任务进度。

    任务进度页面显示通道概览中通道状态为 SUCCEEDED,迁移进度为 2/2,读写详情均为 1.6 kB;子任务详情中两个 DataXTask 子任务状态均为 SUCCEEDED,分别迁移 14 条和 8 条记录,共计 22 条。

  4. 迁移完成之后, 查看HBase表。
    
    idg6                                     column=f1:b, timestamp=1579420817743, value=\xEF\xBF\xBD\xEF\xBF\xBD^\xEF\xBF\xBD\xEF\xBF\xBD\xDF\xB4I
    idg6                                     column=f1:col1, timestamp=1579420817743, value=title16
    idg6                                     column=f1:col2, timestamp=1579420817743, value=title1
    idg6                                     column=f1:d, timestamp=1579420817743, value=0.234234234234234
    idg6                                     column=f1:date, timestamp=1579420817743, value=2019-01-02
    idg6                                     column=f1:datetime, timestamp=1579420817743, value=2019-01-02 20:14:55
    idg6                                     column=f1:dcm, timestamp=1579420817743, value=
    idg6                                     column=f1:f, timestamp=1579420817743, value=1.5
    idg6                                     column=f1:id, timestamp=1579420817743, value=6
    idg6                                     column=f1:te, timestamp=1579420817743, value=
    idg6                                     column=f1:time, timestamp=1579420817743, value=20:14:55
    idg6                                     column=f1:title, timestamp=1579420817743, value=title1
    idg6                                     column=f1:ts, timestamp=1579420817743, value=2019-01-02 20:14:55
    idg7                                     column=f1:b, timestamp=1579420817743, value=\xEF\xBF\xBD\xEF\xBF\xBD^\xEF\xBF\xBD\xEF\xBF\xBD\xDF\xB4I
    idg7                                     column=f1:col1, timestamp=1579420817743, value=title17
    idg7                                     column=f1:col2, timestamp=1579420817743, value=title1
    idg7                                     column=f1:d, timestamp=1579420817743, value=0.234234234234234
    idg7                                     column=f1:date, timestamp=1579420817743, value=2019-01-02
    idg7                                     column=f1:datetime, timestamp=1579420817743, value=2019-01-02 20:14:55
    idg7                                     column=f1:dcm, timestamp=1579420817743, value=
    idg7                                     column=f1:f, timestamp=1579420817743, value=1.5
    idg7                                     column=f1:id, timestamp=1579420817743, value=7
    idg7                                     column=f1:te, timestamp=1579420817743, value=
    idg7                                     column=f1:time, timestamp=1579420817743, value=20:14:55
    idg7                                     column=f1:title, timestamp=1579420817743, value=title1
    idg7                                     column=f1:ts, timestamp=1579420817743, value=2019-01-02 20:14:55

HBase表映射

{
  "reader": {
    "querySql": [
      "select id, title, content from rds.test where id < 8",
      "select id, title, content from rds.test where id >= 8"
    ]
  },
  "writer": {
    "columns": [
      {
        "name": "f1:col1",
        "value": "{{ concat(title, id) }}"
      },
      {
        "name": "f1:col2",
        "value": "content",
        "type": "string" 
      },
      {
        "name": "f1:*"
      }
    ],
    "rowkey": {
      "value": "{{ concat('idg', id) }}"
    },
    "tableName": "default:t1"
  }
}
说明
  • "querySql":根据querySql的数量进行任务拆分,分布式运行。
  • "value": "{{ concat(title, id) }}":将MySQL中的数据titleID字段进行拼接,作为HBase f1:col1列的值。
  • "type": "string":type字段可选, 默认都按string类型类处理写入HBase。
  • "name": "f1:*":MySQL没有匹配到的列会走默认的匹配。
支持简单的表达式,计算表达式为jtwig语法,如下:
{
  "name": "cf1:hhh",
  "value": "{{ concat(title, id) }}"
}
支持动态列,没有匹配到的列会默认匹配。
{
    "name": "cf1:*",
}

Phoenix表映射

{
  "reader": {
    "querySql": [
      "select id, title, ts, datetime, date, time, b, f, d from rds.test where id < 8",
      "select id, title, ts, datetime, date, time, b, f, d from rds.test where id >= 8"
    ]
  },
  "writer": {
    "columns": [
      {
        "isPk": true,
        "name": "id"
      },
      {
        "name": "title",
        "value": "title" 
      },
      {
        "name": "ts"
      },
      {
        "name": "datetime"
      },
      {
        "name": "date"
      },
      {
        "name": "time"
      },
      {
        "name": "b"
      },
      {
        "name": "f"
      },
      {
        "name": "d"
      }
    ],
    "tableName": "dtstest"
  }
}
说明 MySQL中title字段对应Phoenix中的title, 如果字段名相同可不填。