如何复制现有的hbase表

时间:2014-01-03 18:25:48

标签: hadoop cloud hbase

我有一个Hbase表X,我想创建它的精确副本,并将其命名为Y.有人能让我知道它是如何可能的吗?

由于

7 个答案:

答案 0 :(得分:30)

假设您要在同一群集上复制表,可以使用HBase快照 在hbase shell你可以

snapshot 'sourceTable', 'sourceTable-snapshot'
clone_snapshot 'sourceTable-snapshot', 'newTable'

答案 1 :(得分:5)

CopyTable命令非常便于复制HBase表。按以下方式使用它:

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=Y X;

答案 2 :(得分:3)

使用hbase shell
1.确保在hbase-site.xml

中输入快照
  <property>
     <name>hbase.snapshot.enabled</name>
     <value>true</value>
    </property>

2。 HBase的&GT;快照'x','snapshot_x'
3. hbase&gt; clone_snapshot'chapshot_x','another_x'

答案 3 :(得分:1)

在hbase shell中检查版本;

hbase(main):001:0> version
0.90.4, r1150278, Sun Jul 24 15:53:29 PDT 2011

如果旧版本为0.94.6则应使用mapredeuce作业。 快照自0.94.6起可用 如果它在上面,你可以使用toby941 answer 或者你可以使用其中一个

A)

./hbase org.apache.hadoop.hbase.mapreduce.CopyTable
Usage: CopyTable [--rs.class=CLASS] [--rs.impl=IMPL] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename>

B-1)

./hbase org.apache.hadoop.hbase.mapreduce.Export
Usage: Export [-D <property=value>]* <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]

B-2) 然后以您想要的任何名称导入

./hbase org.apache.hadoop.hbase.mapreduce.Import
Usage: Import <tablename> <inputdir>

答案 4 :(得分:0)

根据此处的HBase文件(12)是选项。

答案 5 :(得分:0)

如果您使用的是旧版本的hbase,则快照方法可能无效 https://issues.apache.org/jira/browse/HBASE-8742 。在这种情况下,您可能必须手动复制hbase架构,然后应用快照或更好地升级到固定版本。

答案 6 :(得分:-1)

这将有效..

hbase org.apache.hadoop.hbase.mapreduce.Export tableA /hbase_export/tableA

hbase org.apache.hadoop.hbase.mapreduce.Import /hbase_export/tableA tableAcopy