使用CopyTable工具导入数据
CopyTable是HBase提供的一个实用工具,可以将部分或全部表复制到同一个集群或另一个集群中。目标表必须预先存在。在CloudTable客户端工具中已经包含了CopyTable工具,用户部署客户端工具后,即可使用CopyTable工具导入数据到CloudTable集群。
使用CopyTable工具导入数据
- 准备Linux弹性云服务器作为客户端主机,并在客户端主机上部署CloudTable客户端工具。
具体操作请参见使用HBase Shell访问集群。
在部署客户端工具时,ZK链接地址请配置为源表所在的CloudTable集群的“ZK链接地址(内网)”。
- (可选)如果要将表复制到另一个集群,请获取CloudTable目标集群的“ZK链接地址(内网)”。
登录表格存储服务管理控制台,在左侧导航树单击集群管理,然后在集群列表中找到所需要的集群,并获取相应的“ZK链接地址(内网)”。
- 在使用CopyTable复制表数据前,需要先确保在CloudTable目标集群中目标表已经存在。如果目标表不存在,请先创建目标表。
创建表的具体步骤,请参考创建HBase集群。
- 在客户端主机,打开命令行终端窗口,进入客户端工具安装目录的hbase目录下,然后执行CopyTable命令导入数据到CloudTable集群。
命令示例如下,该示例是将“TestTable”表指定1小时范围内的数据复制到目标集群:
cd ${客户端工具的安装目录}/hbase ./bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1265875194289 --endtime=1265878794289 --peer.adr=${CloudTable目标集群的“ZK链接地址”}:/hbase --families=myOldCf:myNewCf,cf2,cf3 TestTable
CopyTable命令简介
CopyTable的命令格式如下:
CopyTable [general options] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename>
有关上述CopyTable命令的详细信息,请参见HBase官方文档中的CopyTable。
常用选项说明如下:
- startrow:开始行。
- stoprow:停止行。
- starttime:开始时间(以毫秒为单位的unixtime)。如果未指定endtime意味着从开始时间到永久。
- endtime:结束时间。如果未指定starttime,则忽略。
- versions:要复制的单元格版本数。
- new.name:新表的名称。
- peer.adr:目标集群的地址,格式为hbase.zookeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.paren,对于HBase集群而言就是“${CloudTable目标集群的“ZK链接地址”}:/hbase”。
- families:要复制的列族列表,多个列族之间以逗号分隔。
如果要从sourceCfName复制到destCfName,请指定为sourceCfName:destCfName。
如果复制后列族名称保持不变,只需指定cfName。
- all.cells:对删除标记和已删除的单元格也进行复制。
参数说明如下。
tablename:要复制的表的名称。