1

由于我们已将 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-env.sh 中添加了“export HBASE_LIBRARY_PATH=/usr/lib/hadoop/lib/native/”。

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

我们还能尝试什么?

4

1 回答 1

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在比较的两端使用。

于 2013-03-24T09:39:48.973 回答