由于我们已将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。
不幸的是,这并没有解决我们的问题。
我们还能尝试什么?
答案 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
。