HBASE-4998 Support deleted rows in CopyTable

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1212671 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
larsh 2011-12-09 22:39:02 +00:00
parent 1bed70fd99
commit 3e608b3979
2 changed files with 23 additions and 0 deletions

View File

@ -91,9 +91,11 @@
<listitem><varname>rs.impl</varname> hbase.regionserver.impl of the peer cluster. </listitem>
<listitem><varname>starttime</varname> Beginning of the time range. Without endtime means starttime to forever.</listitem>
<listitem><varname>endtime</varname> End of the time range. Without endtime means starttime to forever.</listitem>
<listitem><varname>versions</varname> Number of cell versions to copy.</listitem>
<listitem><varname>new.name</varname> New table's name.</listitem>
<listitem><varname>peer.adr</varname> Address of the peer cluster given in the format hbase.zookeeper.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent</listitem>
<listitem><varname>families</varname> Comma-separated list of ColumnFamilies to copy.</listitem>
<listitem><varname>all.cells</varname> Also copy delete markers and uncollected deleted cells (advanced option).</listitem>
</itemizedlist>
Args:
<itemizedlist>

View File

@ -42,10 +42,12 @@ public class CopyTable {
static String rsImpl = null;
static long startTime = 0;
static long endTime = 0;
static int versions = -1;
static String tableName = null;
static String newTableName = null;
static String peerAddress = null;
static String families = null;
static boolean allCells = false;
/**
* Sets up the actual job.
@ -67,6 +69,12 @@ public class CopyTable {
scan.setTimeRange(startTime,
endTime == 0 ? HConstants.LATEST_TIMESTAMP : endTime);
}
if (allCells) {
scan.setRaw(true);
}
if (versions >= 0) {
scan.setMaxVersions(versions);
}
if(families != null) {
String[] fams = families.split(",");
Map<String,String> cfRenameMap = new HashMap<String,String>();
@ -113,12 +121,14 @@ public class CopyTable {
System.err.println(" starttime beginning of the time range");
System.err.println(" without endtime means from starttime to forever");
System.err.println(" endtime end of the time range");
System.err.println(" versions number of cell versions to copy");
System.err.println(" new.name new table's name");
System.err.println(" peer.adr Address of the peer cluster given in the format");
System.err.println(" hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent");
System.err.println(" families comma-separated list of families to copy");
System.err.println(" To copy from cf1 to cf2, give sourceCfName:destCfName. ");
System.err.println(" To keep the same name, just give \"cfName\"");
System.err.println(" all.cells also copy delete markers and deleted cells");
System.err.println();
System.err.println("Args:");
System.err.println(" tablename Name of the table to copy");
@ -170,6 +180,12 @@ public class CopyTable {
continue;
}
final String versionsArgKey = "--versions=";
if (cmd.startsWith(versionsArgKey)) {
versions = Integer.parseInt(cmd.substring(versionsArgKey.length()));
continue;
}
final String newNameArgKey = "--new.name=";
if (cmd.startsWith(newNameArgKey)) {
newTableName = cmd.substring(newNameArgKey.length());
@ -188,6 +204,11 @@ public class CopyTable {
continue;
}
if (cmd.startsWith("--all.cells")) {
allCells = true;
continue;
}
if (i == args.length-1) {
tableName = cmd;
}