1

CDH4.1.2 のインストールを CDH4.2.0 に更新したため、圧縮を有効にして新しいテーブルを作成できなくなりました。以前は SNAPPY Compression を使用して成功していました。次のような 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-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 に答える