如何复制现有的hbase表

vbopmzt1  于 2021-06-03  发布在  Hadoop
关注(0)|答案(7)|浏览(353)

我有一个hbase表x,我想创建它的精确副本并将其命名为y。有人能告诉我怎么可能吗?
谢谢

yzckvree

yzckvree1#

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

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

iyfamqjs2#

这会有用的。。

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

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

swvgeqrz3#

根据hbase文档,这里(1,2)是选项。

mf98qq94

mf98qq944#

copytable命令对于复制hbase表非常方便。使用方法如下:

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

sczxawaw5#

在hbase shell中检查版本;

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

如果是0.94.6的旧版本,则应使用MapReduce作业。快照从0.94.6开始可用。如果高于0.94.6,则可以使用toby941答案,也可以使用其中一个答案
(一)

./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>
ozxc1zmp

ozxc1zmp6#

如果您使用的是旧版本的hbase,快照方法可能不起作用https://issues.apache.org/jira/browse/hbase-8742 . 在这种情况下,您可能需要手动复制hbase架构,然后应用snapshot或更好的方法来升级到固定版本。

dpiehjr4

dpiehjr47#

使用hbase shell
1确保在hbase-site.xml中启用快照

<property>
     <name>hbase.snapshot.enabled</name>
     <value>true</value>
    </property>

2hbase>快照'x','snapshot\u x'
三。hbase>克隆快照'snapshot\u x'、'another\u x'

相关问题