You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/08/24 04:16:56 UTC
svn commit: r1376807 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java
Author: tedyu
Date: Fri Aug 24 02:16:55 2012
New Revision: 1376807
URL: http://svn.apache.org/viewvc?rev=1376807&view=rev
Log:
HBASE-3271 Allow .META. table to be exported (Liang Xie)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java?rev=1376807&r1=1376806&r2=1376807&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java Fri Aug 24 02:16:55 2012
@@ -31,11 +31,13 @@ import javax.naming.NamingException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.HServerAddress;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
+import org.apache.hadoop.hbase.util.Addressing;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.hadoop.mapreduce.InputFormat;
@@ -155,7 +157,17 @@ extends InputFormat<ImmutableBytesWritab
Pair<byte[][], byte[][]> keys = table.getStartEndKeys();
if (keys == null || keys.getFirst() == null ||
keys.getFirst().length == 0) {
- throw new IOException("Expecting at least one region.");
+ HRegionLocation regLoc = table.getRegionLocation(
+ HConstants.EMPTY_BYTE_ARRAY, false);
+ if (null == regLoc) {
+ throw new IOException("Expecting at least one region.");
+ }
+ List<InputSplit> splits = new ArrayList<InputSplit>(1);
+ InputSplit split = new TableSplit(table.getTableName(),
+ HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, regLoc
+ .getHostnamePort().split(Addressing.HOSTNAME_PORT_SEPARATOR)[0]);
+ splits.add(split);
+ return splits;
}
List<InputSplit> splits = new ArrayList<InputSplit>(keys.getFirst().length);
for (int i = 0; i < keys.getFirst().length; i++) {
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java?rev=1376807&r1=1376806&r2=1376807&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java Fri Aug 24 02:16:55 2012
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hbase.mapreduce;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.hadoop.conf.Configuration;
@@ -44,7 +45,6 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import static org.junit.Assert.assertEquals;
@Category(MediumTests.class)
public class TestImportExport {
@@ -142,6 +142,26 @@ public class TestImportExport {
assertEquals(3, r.size());
}
+ /**
+ * Test export .META. table
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testMetaExport() throws Exception {
+ String EXPORT_TABLE = ".META.";
+ String[] args = new String[] { EXPORT_TABLE, OUTPUT_DIR, "1", "0", "0" };
+ GenericOptionsParser opts = new GenericOptionsParser(new Configuration(
+ cluster.getConfiguration()), args);
+ Configuration conf = opts.getConfiguration();
+ args = opts.getRemainingArgs();
+
+ Job job = Export.createSubmittableJob(conf, args);
+ job.getConfiguration().set("mapreduce.framework.name", "yarn");
+ job.waitForCompletion(false);
+ assertTrue(job.isSuccessful());
+ }
+
@Test
public void testWithDeletes() throws Exception {
String EXPORT_TABLE = "exportWithDeletes";