使用DataX将HBase数据库中的全量数据同步到表格存储(Tablestore)中。
准备工作
- 开通表格存储服务,并创建实例和数据表。具体操作,请参见通过控制台使用或者通过命令行工具使用。
说明 创建数据表时建议使用HBase原主键或唯一索引作为表格存储数据表的主键。
- 获取AccessKey用来进行签名认证。AccessKey包括AccessKey ID和AccessKey Secret。具体操作,请参见获取AccessKey。
步骤一:下载DataX
DataX是一个异构数据源离线同步工具,本示例中使用DataX将HBase中的数据同步到表格存储。
您可以选择下载DataX的源代码(开源)进行本地编译或者直接下载编译好的压缩包。
步骤二:Maven打包
如果您下载的是已编译好的DataX压缩包,请跳过此步骤。
说明 此步骤会在本地编译各种数据源的Writer和Reader,花费时间较长,请耐心等待。
步骤三:准备全量导出的JSON文件
DataX提供了HbaseReader插件从HBase中读取数据。在底层实现上,HbaseReader通过HBase的Java客户端连接远程HBase服务,并通过Scan方式读取指定rowkey范围内的数据,然后将读取的数据使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。
您可以根据HBase版本选择相应的Reader插件导出JSON文件。
说明 DataX仅提供HBase0.94、HBase1.1以及HBase2.0的导出插件,如需导出其他版本的HBase数据,请参考HBase API实现导出工具。
- Hbase0.94 XReader
- Hbase1.1 XReader
- Hbase2.0 XReader:Hbase2.0 XReader插件从Phoenix读取数据。
配置样例
使用Hbase1.1 XReader配置一个从HBase抽取数据到本地的作业(normal 模式):
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "hbase11xreader",
"parameter": {
"hbaseConfig": {
"hbase.zookeeper.quorum": "xxxf"
},
"table": "users",
"encoding": "utf-8",
"mode": "normal",
"column": [
{
"name": "rowkey",
"type": "string"
},
{
"name": "info: age",
"type": "string"
},
{
"name": "info: birthday",
"type": "date",
"format":"yyyy-MM-dd"
},
{
"name": "info: company",
"type": "string"
},
{
"name": "address: contry",
"type": "string"
},
{
"name": "address: province",
"type": "string"
},
{
"name": "address: city",
"type": "string"
}
],
"range": {
"startRowkey": "",
"endRowkey": "",
"isBinaryRowkey": true
}
}
},
"writer": {
"name": "txtfilewriter",
"parameter": {
"path": "/Users/shf/workplace/datax_test/hbase11xreader/result",
"fileName": "qiran",
"writeMode": "truncate"
}
}
}
]
}
}
步骤四:执行同步命令
执行如下命令同步数据。
python datax.py -j"-Xms4g -Xmx4g" hbase_to_ots.json
其中-j"-Xms4g -Xmx4g"
可以限制占用JVM内存的大小;如果不指定,将会使用conf/core.json
中的配置,默认为1 GB。
相关操作
HBase数据迁移到表格存储后,您可以使用Tablestore SDK或者Tablestore HBase Client读取表格存储的数据,具体操作,请参见从HBase Client迁移到Tablestore HBase Client。