Compression CDH4.2.0无法设置HBase压缩

Compression CDH4.2.0无法设置HBase压缩,compression,hbase,cloudera,Compression,Hbase,Cloudera,由于我们已将CDH4.1.2的安装更新为CDH4.2.0,因此无法再创建启用压缩的新表。 我们以前成功地使用了SNAPPY压缩。 现在,当我们尝试执行create语句时,如: create 'tableWithCompression', {NAME => 't1', COMPRESSION => 'SNAPPY'} 出现以下错误: ERROR: Compression SNAPPY is not supported. Use one of LZ4 SNAPPY LZO GZ NON

由于我们已将CDH4.1.2的安装更新为CDH4.2.0,因此无法再创建启用压缩的新表。 我们以前成功地使用了SNAPPY压缩。 现在,当我们尝试执行create语句时,如:

create 'tableWithCompression', {NAME => 't1', COMPRESSION => 'SNAPPY'}
出现以下错误:

ERROR: Compression SNAPPY is not supported. Use one of LZ4 SNAPPY LZO GZ NONE
我们意识到也没有发现其他压缩算法:例如,GZ也有同样的问题

ERROR: Compression GZ is not supported. Use one of LZ4 SNAPPY LZO GZ NONE
我们增加了 “导出HBASE_LIBRARY_PATH=/usr/lib/hadoop/lib/native/” 至hbase-env.sh

不幸的是,这并没有解决我们的问题


我们还可以试试别的吗?

我也一样。这似乎是admin.rb脚本中的一个bug

有关守则如下:

      if arg.include?(org.apache.hadoop.hbase.HColumnDescriptor::COMPRESSION)
        compression = arg[org.apache.hadoop.hbase.HColumnDescriptor::COMPRESSION].upcase
        unless org.apache.hadoop.hbase.io.hfile.Compression::Algorithm.constants.include?(compression)      
          raise(ArgumentError, "Compression #{compression} is not supported. Use one of " + org.apache.hadoop.hbase.io.hfile.Compression::Algorithm.constants.join(" ")) 
        else 
          family.setCompressionType(org.apache.hadoop.hbase.io.hfile.Compression::Algorithm.valueOf(compression))
        end
      end
我知道后来有一些“p”的说法。压缩是
“SNAPPY”
org.apache.hadoop.hbase.io.hfile.compression::Algorithm.constants
[:LZ4,:SNAPPY,:LZO,:GZ,:NONE]

看到差别了吗?我们正在比较字符串和符号。快速修复方法是将设置压缩的行更改为以下内容:

    compression = arg[org.apache.hadoop.hbase.HColumnDescriptor::COMPRESSION].upcase.to_sym

我想这与大量不同的jruby变体和配置有关。我想在某些情况下,常量是字符串,在其他情况下是符号。一个更持久的解决方法是在比较的两端使用
to_sym

没有也会遇到同样的问题吗?我猜这可能与大写转换和环境的地区/语言有关,因为引发此问题的检查仅查找代码中定义的枚举,而不是本机库检查。是的,无时也会发生此错误。运行区域设置显示“LANG=en_GB.UTF-8”。对不起,我的internet连接非常糟糕。我无法git克隆hbase,因此无法提交修补程序:(。