Как заставить Pig работать с lzo файлами? - PullRequest
6 голосов
/ 02 сентября 2011

Итак, я видел несколько обучающих программ для этого онлайн, но каждый, кажется, говорит что-то свое.Кроме того, каждый из них, похоже, не указывает, пытаетесь ли вы заставить вещи работать на удаленном кластере или локально взаимодействовать с удаленным кластером и т. Д.

Тем не менее, моя цельэто просто заставить мой локальный компьютер (mac) заставить работать свинью с lzo-сжатыми файлами, которые существуют в кластере Hadoop, который уже настроен для работы с lzo-файлами.У меня уже есть локально установленный Hadoop, и я могу получать файлы из кластера с hadoop fs -[command].

. У меня также уже есть локально установленный pig и общение с кластером hadoop, когда я запускаю скрипты или просто запускаю вещи через grunt.Я могу нормально загружать и воспроизводить файлы, не относящиеся к lzo.Моя проблема только в том, чтобы выяснить способ загрузки файлов lzo.Может быть, я могу просто обработать их через экземпляр ElephantBird кластера?Я понятия не имею, и нашел только минимальную информацию в Интернете.

Итак, любой краткий учебник или ответ на этот вопрос был бы замечательным и, надеюсь, помог бы большему количеству людей, чем только я.

1 Ответ

4 голосов
/ 19 сентября 2011

Я недавно заставил это работать и написал вики для моих коллег.Вот отрывок, подробно описывающий, как заставить PIG работать с lzos.Надеюсь, это кому-нибудь поможет!

ПРИМЕЧАНИЕ. Это написано для Mac.Этапы будут практически идентичны для других ОС ', и это, безусловно, должно дать вам то, что вам нужно знать для настройки в Windows или Linux, но вам нужно будет немного экстраполировать (очевидно, измените Mac-ориентированные папки на любую ОС, которую вы' 'повторное использование и т. д.)

Подключение PIG для работы с LZO

Это была самая раздражающая и трудоемкая часть для меня - не потому, что это сложно, а потому, что есть 50 различных уроковонлайн, ни один из которых не так уж полезен.Во всяком случае, что я сделал, чтобы получить эту работу:

  1. Клон hadoop-lzo из github в https://github.com/kevinweil/hadoop-lzo.

  2. Скомпилируйте его, чтобы получить hadoop-lzo* .jar и нативные библиотеки * .o.Вам нужно будет скомпилировать это на 64-битной машине.

  3. Скопируйте собственные библиотеки в $ HADOOP_HOME / lib / native / Mac_OS_X-x86_64-64 /.

  4. Скопируйте java jar в $ HADOOP_HOME / lib и $ PIG_HOME / lib

  5. Затем настройте hadoop и pig, чтобы свойство java.library.path указывало на нативный lzoбиблиотеки.Вы можете сделать это в $ HADOOP_HOME / conf / mapred-site.xml с помощью:

    <property>
        <name>mapred.child.env</name>
        <value>JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/</value>
    </property>
    
  6. Теперь попробуйте grunt shell, снова запустив pig, и убедитесь, что все по-прежнему работает,Если это не так, вы, вероятно, что-то напутали в mapred-site.xml, и вам следует дважды проверить это.

  7. Отлично!Мы почти там.Все, что вам нужно сделать сейчас, это установить Слон-птицу.Вы можете получить это от https://github.com/kevinweil/elephant-bird (клонировать его).

  8. Теперь, чтобы заставить птицу-слона работать, вам потребуется довольно много предварительных требований.,Они перечислены на странице, упомянутой выше, и могут измениться, поэтому я не буду их здесь указывать.То, что я упомяну, - то, что версии на них очень важны.Если вы получите неправильную версию и попробуете запустить ant, вы получите ошибки.Поэтому не пытайтесь получить предварительные требования от brew или macports, так как вы, вероятно, получите более новую версию.Вместо этого просто скачайте tarballs и соберите для каждого.

  9. команда: ant в папке «Слон-птица» для создания банки.

  10. Для простоты переместите все соответствующие банки (hadoop-lzo-xxxjar и elephant-bird-xxxjar), которые вам нужно будет часто регистрировать где-то, где их легко найти./ usr / local / lib / hadoop / ... прекрасно работает.

  11. Попробуйте!Поиграйте с загрузкой обычных файлов и lzos в grunt shell.Зарегистрируйте соответствующие jar-файлы, упомянутые выше, попробуйте загрузить файл, ограничить вывод управляемым числом и сбросить его.Все это должно работать нормально, используете ли вы обычный текстовый файл или lzo.

...