Repository: hbase
Updated Branches:
  refs/heads/0.98 babc3a7ab -> ddcc47203


HBASE-12306 CellCounter output's wrong value for Total Families Across all Rows 
in output file (Ashish Singhi)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/ddcc4720
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/ddcc4720
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/ddcc4720

Branch: refs/heads/0.98
Commit: ddcc47203a8c9c597725c11f460449d15cce6196
Parents: babc3a7
Author: Ted Yu <te...@apache.org>
Authored: Wed Oct 22 14:29:50 2014 +0000
Committer: Ted Yu <te...@apache.org>
Committed: Wed Oct 22 14:29:50 2014 +0000

----------------------------------------------------------------------
 .../hadoop/hbase/mapreduce/CellCounter.java     |  7 +--
 .../hadoop/hbase/mapreduce/TestCellCounter.java | 47 +++++++++++++++++++-
 2 files changed, 50 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/ddcc4720/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java
index c25c69c..476ca36 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/CellCounter.java
@@ -122,9 +122,10 @@ public class CellCounter {
           if (!thisRowFamilyName.equals(currentFamilyName)) {
             currentFamilyName = thisRowFamilyName;
             context.getCounter("CF", thisRowFamilyName).increment(1);
-            context.write(new Text("Total Families Across all Rows"),
-              new IntWritable(1));
-            context.write(new Text(thisRowFamilyName), new IntWritable(1));
+            if (1 == context.getCounter("CF", thisRowFamilyName).getValue()) {
+              context.write(new Text("Total Families Across all Rows"), new 
IntWritable(1));
+              context.write(new Text(thisRowFamilyName), new IntWritable(1));
+            }
           }
           String thisRowQualifierName = thisRowFamilyName + separator
               + Bytes.toStringBinary(CellUtil.cloneQualifier(value));

http://git-wip-us.apache.org/repos/asf/hbase/blob/ddcc4720/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java
index 1ccc57d..eaf8288 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestCellCounter.java
@@ -155,4 +155,49 @@ public class TestCellCounter {
       System.setSecurityManager(SECURITY_MANAGER);
     }
   }
-}
\ No newline at end of file
+
+  /**
+   * Test CellCounter for complete table all data should print to output
+   */
+  @Test(timeout = 300000)
+  public void testCellCounterForCompleteTable() throws Exception {
+    String sourceTable = "testCellCounterForCompleteTable";
+    String outputPath = OUTPUT_DIR + sourceTable;
+    LocalFileSystem localFileSystem = new LocalFileSystem();
+    Path outputDir =
+        new Path(outputPath).makeQualified(localFileSystem.getUri(),
+          localFileSystem.getWorkingDirectory());
+    byte[][] families = { FAMILY_A, FAMILY_B };
+    Table t = UTIL.createTable(Bytes.toBytes(sourceTable), families);
+    try {
+      Put p = new Put(ROW1);
+      p.add(FAMILY_A, QUALIFIER, now, Bytes.toBytes("Data11"));
+      p.add(FAMILY_B, QUALIFIER, now + 1, Bytes.toBytes("Data12"));
+      p.add(FAMILY_A, QUALIFIER, now + 2, Bytes.toBytes("Data13"));
+      t.put(p);
+      p = new Put(ROW2);
+      p.add(FAMILY_B, QUALIFIER, now, Bytes.toBytes("Dat21"));
+      p.add(FAMILY_A, QUALIFIER, now + 1, Bytes.toBytes("Data22"));
+      p.add(FAMILY_B, QUALIFIER, now + 2, Bytes.toBytes("Data23"));
+      t.put(p);
+      String[] args = { sourceTable, outputDir.toString(), ";" };
+      runCount(args);
+      FileInputStream inputStream =
+          new FileInputStream(outputPath + File.separator + "part-r-00000");
+      String data = IOUtils.toString(inputStream);
+      inputStream.close();
+      assertTrue(data.contains("Total Families Across all Rows" + "\t" + "2"));
+      assertTrue(data.contains("Total Qualifiers across all Rows" + "\t" + 
"4"));
+      assertTrue(data.contains("Total ROWS" + "\t" + "2"));
+      assertTrue(data.contains("b;q" + "\t" + "2"));
+      assertTrue(data.contains("a;q" + "\t" + "2"));
+      assertTrue(data.contains("row1;a;q_Versions" + "\t" + "1"));
+      assertTrue(data.contains("row1;b;q_Versions" + "\t" + "1"));
+      assertTrue(data.contains("row2;a;q_Versions" + "\t" + "1"));
+      assertTrue(data.contains("row2;b;q_Versions" + "\t" + "1"));
+    } finally {
+      t.close();
+      FileUtil.fullyDelete(new File(outputPath));
+    }
+  }
+}

Reply via email to