我有一个Hbase表X,我想创建它的精确副本,并将其命名为Y.有人能让我知道它是如何可能的吗?
由于
答案 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)
答案 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