diff -urNad hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java --- hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java 2012-04-30 15:17:33.212584332 -0700 @@ -432,6 +432,7 @@ switch (type) { case LZO: compressionType = "LZO"; break; case GZ: compressionType = "GZ"; break; + case SNAPPY: compressionType = "SNAPPY"; break; default: compressionType = "NONE"; break; } setValue(COMPRESSION, compressionType); @@ -456,6 +457,7 @@ switch (type) { case LZO: compressionType = "LZO"; break; case GZ: compressionType = "GZ"; break; + case SNAPPY: compressionType = "SNAPPY"; break; default: compressionType = "NONE"; break; } setValue(COMPRESSION_COMPACT, compressionType); diff -urNad hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/io/hfile/Compression.java hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/io/hfile/Compression.java --- hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/io/hfile/Compression.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/io/hfile/Compression.java 2012-04-30 15:18:32.893225616 -0700 @@ -140,6 +140,25 @@ return downStream; } + }, + SNAPPY("snappy") { + // Use base type to avoid compile-time dependencies. + private transient CompressionCodec snappyCodec; + + @Override + CompressionCodec getCodec(Configuration conf) { + if (snappyCodec == null) { + try { + Class externalCodec = + ClassLoader.getSystemClassLoader().loadClass("org.apache.hadoop.io.compress.SnappyCodec"); + snappyCodec = (CompressionCodec) ReflectionUtils.newInstance(externalCodec, + conf); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + return snappyCodec; + } }; private final Configuration conf; diff -urNad hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/util/CompressionTest.java hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/util/CompressionTest.java --- hbase-0.90.6~/src/main/java/org/apache/hadoop/hbase/util/CompressionTest.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/main/java/org/apache/hadoop/hbase/util/CompressionTest.java 2012-04-30 15:17:33.212584332 -0700 @@ -94,7 +94,7 @@ public static void usage() { System.err.println( - "Usage: CompressionTest none|gz|lzo\n" + + "Usage: CompressionTest none|gz|lzo|snappy\n" + "\n" + "For example:\n" + " hbase " + CompressionTest.class + " file:///tmp/testfile gz\n"); diff -urNad hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFilePerformance.java hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFilePerformance.java --- hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFilePerformance.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFilePerformance.java 2012-04-30 15:17:33.212584332 -0700 @@ -129,7 +129,7 @@ * @param fileType "HFile" or "SequenceFile" * @param keyLength * @param valueLength - * @param codecName "none", "lzo", "gz" + * @param codecName "none", "lzo", "gz", "snappy" * @param rows number of rows to be written. * @param writeMethod used for HFile only. * @param minBlockSize used for HFile only. diff -urNad hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java --- hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java 2012-04-30 15:17:33.212584332 -0700 @@ -281,7 +281,7 @@ private Options buildOptions() { Option compress = - OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz]") + OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]") .hasArg().withDescription("compression scheme").create('c'); Option fileSize = @@ -446,7 +446,7 @@ private void validateOptions() throws ParseException { if (!compress.equals("none") && !compress.equals("lzo") - && !compress.equals("gz")) { + && !compress.equals("gz") && !compress.equals("snappy")) { throw new ParseException("Unknown compression scheme: " + compress); } diff -urNad hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java --- hbase-0.90.6~/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java 2012-04-30 15:17:30.000000000 -0700 +++ hbase-0.90.6/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java 2012-04-30 15:17:33.212584332 -0700 @@ -54,5 +54,6 @@ assertFalse(CompressionTest.testCompression("LZO")); assertTrue(CompressionTest.testCompression("NONE")); assertTrue(CompressionTest.testCompression("GZ")); + assertTrue(CompressionTest.testCompression("SNAPPY")); } }