因此,我在网上看到了一些教程,但是每个教程似乎都在做一些不同的事情。而且,它们似乎都没有指定您是要使事情在远程集群上运行还是在本地与远程集群进行交互等。

就是说,我的目标只是让我的本地计算机(一台Mac)能够使Pig与lzo压缩文件一起使用,而lzo压缩文件已存在于已经设置为可以与lzo文件一起使用的Hadoop群集中。我已经在本地安装了Hadoop,并且可以使用 hadoop fs -[command]从集群中获取文件。

我还已经在本地安装了Pig,并在运行脚本或通过grunt运行东西时与hadoop集群通信。我可以很好地加载和播放非lzo文件。我的问题仅在于找到一种加载lzo文件的方式。也许我可以通过ElephantBird群集的实例来处理它们?我不知道,只在网上找到了很少的信息。

因此,任何简短的教程或答案都将非常棒,并有望为更多人提供帮助,而不仅仅是我自己。

最佳答案

我最近使它生效,并为我的同事编写了一个Wiki。这是一段摘录,详细介绍了如何使PIG与lzos一起使用。希望这对某人有帮助!

注意:这是在考虑Mac的情况下编写的。步骤与其他OS几乎相同,并且绝对可以为您提供在Windows或Linux上配置所需的知识,但是您需要进行一些推断(显然,将以Mac为中心的文件夹更改为您要使用的任何OS)重新使用,等等...)。

连接PIG以能够与LZO一起使用

到目前为止,这对我来说是最烦人且最耗时的部分-不是因为很困难,而是因为有50多种不同的在线教程,但没有一个对您有帮助。无论如何,我要做的就是:

  • 从github的克隆Hadoop hadoop-lzo到https://github.com/kevinweil/hadoop-lzo
  • 对其进行编译以获取hadoop-lzo * .jar和 native * .o库。您需要编译
    在64位计算机上。
  • 将 native 库复制到$ HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/。
  • 将Java jar复制到$ HADOOP_HOME/lib和$ PIG_HOME/lib
  • 然后将hadoop和pig配置为具有属性java.library.path
    指向lzo native 库。您可以在$ 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>
    
  • 现在,通过再次运行pig来尝试grunt shell,并确保一切仍然有效。如果不是,您可能在mapred-site.xml中弄乱了某些内容,应该仔细检查它。
  • 太好了!我们快到了。您现在所需要做的就是安装大象鸟。您可以从https://github.com/kevinweil/elephant-bird获得它(克隆它)。
  • 现在,为了使象鸟工作,您需要大量的先决条件。这些已在上面提到的页面上列出,并且可能会更改,因此在此不再赘述。我要提到的是这些上的版本非常重要。如果您使用的版本不正确并尝试运行ant,则会收到错误消息。因此,请勿尝试从brew或macports获取先决条件,因为您可能会获得较新的版本。相反,只需下载tarball并为每个构建。
  • 命令:在Elephant-bird文件夹中使用ant来创建一个jar。
  • 为了简单起见,将需要经常注册的所有相关jar(hadoop-lzo-x.x.x.jar和Elephant-bird-x.x.x.jar)移动到可以轻松找到它们的位置。/usr/local/lib/hadoop/...效果很好。
  • 试试看!尝试在grunt shell中加载普通文件和lzos。注册上述相关的jar,尝试加载文件,将输出限制为可管理的数量,然后转储它。无论您使用的是普通文本文件还是lzo,这一切都可以正常工作。
  • 关于hadoop - 如何让Pig与lzo文件一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7277621/

    10-10 16:59