HBASE-15881 Allow BZIP2 compression.
This commit is contained in:
parent
7e5d530870
commit
fc890a2ecb
|
@ -235,7 +235,34 @@ public final class Compression {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
},
|
||||||
|
BZIP2("bzip2") {
|
||||||
|
// Use base type to avoid compile-time dependencies.
|
||||||
|
private volatile transient CompressionCodec bzipCodec;
|
||||||
|
private transient Object lock = new Object();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
CompressionCodec getCodec(Configuration conf) {
|
||||||
|
if (bzipCodec == null) {
|
||||||
|
synchronized (lock) {
|
||||||
|
if (bzipCodec == null) {
|
||||||
|
bzipCodec = buildCodec(conf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bzipCodec;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CompressionCodec buildCodec(Configuration conf) {
|
||||||
|
try {
|
||||||
|
Class<?> externalCodec =
|
||||||
|
getClassLoaderForCodec().loadClass("org.apache.hadoop.io.compress.BZip2Codec");
|
||||||
|
return (CompressionCodec) ReflectionUtils.newInstance(externalCodec, conf);
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private final Configuration conf;
|
private final Configuration conf;
|
||||||
private final String compressName;
|
private final String compressName;
|
||||||
|
|
|
@ -75,12 +75,14 @@ public class TestCompressionTest {
|
||||||
nativeCodecTest("LZO", "lzo2", "com.hadoop.compression.lzo.LzoCodec");
|
nativeCodecTest("LZO", "lzo2", "com.hadoop.compression.lzo.LzoCodec");
|
||||||
nativeCodecTest("LZ4", null, "org.apache.hadoop.io.compress.Lz4Codec");
|
nativeCodecTest("LZ4", null, "org.apache.hadoop.io.compress.Lz4Codec");
|
||||||
nativeCodecTest("SNAPPY", "snappy", "org.apache.hadoop.io.compress.SnappyCodec");
|
nativeCodecTest("SNAPPY", "snappy", "org.apache.hadoop.io.compress.SnappyCodec");
|
||||||
|
nativeCodecTest("BZIP2", "bzip2", "org.apache.hadoop.io.compress.BZip2Codec");
|
||||||
} else {
|
} else {
|
||||||
// Hadoop nativelib is not available
|
// Hadoop nativelib is not available
|
||||||
LOG.debug("Native code not loaded");
|
LOG.debug("Native code not loaded");
|
||||||
assertFalse(CompressionTest.testCompression("LZO"));
|
assertFalse(CompressionTest.testCompression("LZO"));
|
||||||
assertFalse(CompressionTest.testCompression("LZ4"));
|
assertFalse(CompressionTest.testCompression("LZ4"));
|
||||||
assertFalse(CompressionTest.testCompression("SNAPPY"));
|
assertFalse(CompressionTest.testCompression("SNAPPY"));
|
||||||
|
assertFalse(CompressionTest.testCompression("BZIP2"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue