最近有一个需求,是将Hbase表中的数据复制到另一张表中,因为Hbase的数据比较多,通过java程序读出来然后再向数据库中插入的话,是不太现实了,只能寻找另外的工具,搜了一下原来Hbase自身就提供了相应的组件,那就是 CopyTable。

简单的记录一下使用过程

1、创建两张表

create 'test01' ,'name'

create 'test02' ,'name'

2、向表中插入数据

put 'test01' , '001','name:n' ,'xiaoming'

put 'test01' , '002','name:n' ,'tom'

3、查询一下

 4、进行复制

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --startrow=000 --stoprow=999 --new.name=test02 --families=name test01

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.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.paren,对于CloudTable集群而言就是“${CloudTable目标集群的“ZK链接地址”}:/hbase”。
  • families:要复制的列族列表,多个列族之间以逗号分隔。

    如果要从sourceCfName复制到destCfName,请指定为sourceCfName:destCfName。

    如果复制后列族名称保持不变,只需指定cfName。

  • all.cells:对删除标记和已删除的单元格也进行复制。

参数说明如下:

tablename:要复制的表的名称。

参考文档:使用CopyTable工具导入数据_表格存储服务 CloudTable_用户指南_集群模式_数据批量导入_华为云

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐