CDH4.2.0无法设置HBase压缩

时间:2013-03-23 11:17:11

标签: compression hbase cloudera

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

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。

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

我们还能尝试什么?

1 个答案:

答案 0 :(得分:2)

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

有问题的代码是:

      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