b6bb18022f
We get and retain Compressor instances in HFileBlockDefaultEncodingContext, and could in theory call Compressor#reinit when setting up the context, to update compression parameters like level and buffer size, but we do not plumb through the CompoundConfiguration from the Store into the encoding context. As a consequence we can only update codec parameters globally in system site conf files. Fine grained configurability is important for algorithms like ZStandard (ZSTD), which offers more than 20 compression levels, where at level 1 it is almost as fast as LZ4, and where at higher levels it utilizes computationally expensive techniques to rival LZMA at compression ratio but trades off significantly for reduced compresson throughput. The ZSTD level that should be set for a given column family or table will vary by use case. Signed-off-by: Viraj Jasani <vjasani@apache.org> Conflicts: hbase-compression/hbase-compression-zstd/src/main/java/org/apache/hadoop/hbase/io/compress/zstd/ZstdDecompressor.java hbase-server/src/test/java/org/apache/hadoop/hbase/io/compress/HFileTestBase.java hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.java