2013-03-23 67 views
1

由于我们已将CDH4.1.2的安装更新为CDH4.2.0,因此我们不再能够使用启用的压缩来创建新表。 我们之前成功使用SNAPPY Compression。 现在,当我们试图执行像创建声明:CDH4.2.0无法设置HBase压缩

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目录/本地/” 到hbase-env.sh。

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

我们还能试试吗?

+1

你是否也遇到与NONE一样的问题?我猜这可能与大写字母转换和环境的语言环境/语言有关,因为引发此操作的检查仅查找代码中定义的枚举而不是本机lib检查。 – 2013-03-23 16:08:51

+0

是的,NONE也会出现此错误。运行区域设置显示“LANG = en_GB.UTF-8”。 – bathyscaph 2013-03-23 16:35:26

回答

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更为长久的解决方法。

+0

您是否介意为此提供上游补丁? – 2013-03-24 14:17:23

+0

对不起,我的网络连接非常糟糕。我不能克隆hbase,因此无法提交补丁:(。 – nes1983 2013-03-27 14:38:20