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

注意事项

RDS增量导入功能于2023年3月10日下线。2023年3月10日后购买的LTS将无法使用RDS增量导入功能,2023年3月10日前购买的LTS仍可正常使用此功能。

前提条件

  • LTS的购买时间在2023年3月10日之前。
  • 已购买LTS数据迁移同步服务,配置LTS操作页面账户密码。
  • 已打通LTS和HBase迁移集群的网络。
  • 已添加HBase集群数据源。
  • 开通DTS订阅服务, 添加DTS数据源。

适用版本

  • 自建HBase1.x、2.x
  • EMR HBase
  • 标准版云HBase、增强版云HBase(单机版本、集群版本)
  • 云HBase Phoenix

任务创建

  1. 登录LTS操作页面,在左侧导航栏中选择导入Lindorm/HBase > RDS实时数据复制RDS实时数据复制
  2. 单击创建通道,设置RDS数据源目标数据源(HBase、Phoenix),输入需要迁移的表Mapping信息。DTS订阅通道
  3. 单击创建同步通道

HBase表映射

{
  "mapping": [
    {
      "columns": [
        {
          "name": "cf1:hhh",
          "value": "{{ concat(title, id) }}"
        },
        {
          "name": "cf1:title",
          "value": "title"
        },
        {
          "name": "cf1:*"
        }
      ],
      "config": {
        "skipDelete": true
      },
      "rowkey": {
        "value": "{{ concat('idg', id) }}"
      },
      "srcTableName": "hhh_test.test",
      "targetTableName": "default:_test"
    }
  ]
}
参数描述必选
mapping[y].srcTableNameRDS源表表名。
mapping[y].targetTableNameHBase目标表名。
mapping[y].columnsRDS表和HBase表列的对应。
mapping[y].columns[x].name对应的HBase的列名。
mapping[y].columns[x].value对应的HBase列的计算表达式,该计算表达式为Jtwig语法,当用户需要对源表的列进行简单计算得到rowkey时可以用。
mapping[y].config表的同步策略。
mapping[y].rowkeyPhoenix表的Rowkey的生成规则。
  • 支持简单的表达式,如下示例。
    {
      "name": "cf1:hhh",
      "value": "{{ concat(title, id) }}"
    }
  • 支持动态列,用户可以在不预先定义列的情况下插入列。
    {
        "name": "cf1:*",
    }
  • 支持指定订阅的起始时间(DTS订阅通道中包含指定时间戳以后的数据)。
    {
      "config": {
          "startOffset":1569463200 // 秒
      },
      "mapping": [
          "srcTableName": "hhh_test.test",
          "targetTableName": "default:test",
          "columns": [
            {
              "name": "cf1:*"
            }
          ],
          "config": {
            "skipDelete": true
          },
          "rowkey": {
            "value": "{{ concat('idg', id) }}"
          }
        }
      ]
    }
  • DML支持的SQL操作如下表。
    操作支持备注
    INSERT对应HBase的PUT。
    UPDATE对应HBase的PUT。
    DELETE用户可以配置是否同步源端的DELETE,默认不同步。

Phoenix表映射

{
  "mapping": [
    {
      "srcTableName": "hhh_test.phoenix_test",
      "targetTableName": "phoenix_test",
      "config": {
        "skipDelete": true
      },
      "columns": [
        {
          "name": "id",
          "isPk": true
        },
        {
          "name": "title",
          "value": "title"
        },
        {
          "name": "ts",
          "value": "ts"
        },
        {
          "name": "datetime",
          "value": "datetime"
        }
      ]
    }
  ]
}
参数描述必选
mapping[y].srcTableNameRDS源表表名
mapping[y].targetTableNamePhoenix目标表名
mapping[y].columnsRDS表和Phoenix表列的对应
mapping[y].columns[x].namePhoenix的列名
mapping[y].columns[x].value对应RDS列名
mapping[y].columns[x].isPk指定主键列
mapping[y].config表的同步策略
mapping[y].rowkeyHBase表的rowkey的生成规则