2013-03-23 3 views
1

Поскольку мы обновили нашу установку CDH4.1.2 до CDH4.2.0, мы больше не можем создавать новые таблицы с включенным сжатием. Мы успешно использовали сжатие SNAPPY. Теперь, когда мы пытаемся выполнить создать заявление, как: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/Библиотека/нативный /" к hbase-env.sh.

К сожалению, это не помогло решить проблему.

Что еще мы можем попробовать?

+1

У вас такая же проблема с NONE? Я предполагаю, что это может иметь какое-то отношение к преобразованию верхнего регистра и локалям/языкам среды, поскольку проверка, которая бросает это, просто просматривает перечисление, определенное в коде, а не проверку на собственные библиотеки. –

+0

Да, эта ошибка также возникает при использовании NONE. Запуск локали показывает «LANG = en_GB.UTF-8». – bathyscaph

ответ

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 

Некоторые "р" заявления позже, я знаю, что. сжатие "SNAPPY", и org.apache.hadoop.hbase.io.hfile.Compression::Algorithm.constants - [:LZ4, :SNAPPY, :LZO, :GZ, :NONE].

См. Diffrence? Мы сравниваем строки и символы. Быстро исправить, чтобы изменить строку, которая устанавливает компрессию на следующее:

compression = arg[org.apache.hadoop.hbase.HColumnDescriptor::COMPRESSION].upcase.to_sym 

Я предполагаю, что это связано с там быть тонны различных вариантов JRuby и конфигураций. Я полагаю, в некоторых, константы являются строками, в других символах. Более постоянным решением является использование to_sym на обоих концах сравнения.

+0

Не могли бы вы внести вклад в создание патча вверх по течению? –

+0

Извините, мое подключение к Интернету здесь очень дрянное. Я не могу git clone hbase и поэтому не могу отправить патч :(. – nes1983