更新时间:2024-04-29 GMT+08:00

使用CopyTable工具导入数据

CopyTable是HBase提供的一个实用工具,可以将部分或全部表复制到同一个集群或另一个集群中。目标表必须预先存在。在CloudTable客户端工具中已经包含了CopyTable工具,用户部署客户端工具后,即可使用CopyTable工具导入数据到CloudTable集群。

使用CopyTable工具导入数据

  1. 准备Linux弹性云服务器作为客户端主机,并在客户端主机上部署CloudTable客户端工具。

    具体操作请参见使用HBase Shell访问集群

    在部署客户端工具时,ZK链接地址请配置为源表所在的CloudTable集群的“ZK链接地址(内网)”。

  2. (可选)如果要将表复制到另一个集群,请获取CloudTable目标集群的“ZK链接地址(内网)”。

    登录表格存储服务管理控制台,在左侧导航树单击集群管理,然后在集群列表中找到所需要的集群,并获取相应的“ZK链接地址(内网)”。

  3. 在使用CopyTable复制表数据前,需要先确保在CloudTable目标集群中目标表已经存在。如果目标表不存在,请先创建目标表。

    创建表的具体步骤,请参考创建HBase集群

  4. 在客户端主机,打开命令行终端窗口,进入客户端工具安装目录的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:要复制的表的名称。