首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Pig使用lzo文件?

如何让Pig使用lzo文件?
EN

Stack Overflow用户
提问于 2011-09-02 07:07:08
回答 1查看 5.1K关注 0票数 6

所以,我已经在网上看到了几个教程,但每个教程似乎都说要做一些不同的事情。而且,它们中的每一个似乎都没有指定您是要让事情在远程集群上工作,还是要与远程集群进行本地交互,等等。

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

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

因此,任何一种简短的教程或答案都会很棒,希望能帮助到更多的人,而不仅仅是我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-20 03:46:36

我最近开始使用它,并在上面为我的同事写了一个维基。下面是一段摘录,详细介绍了如何让PIG与lzos一起工作。希望这对某些人有帮助!

注意:这篇文章在编写时就考虑到了Mac。对于其他操作系统,这些步骤几乎是相同的,这肯定会给你在Windows或Linux上配置所需的知识,但你需要推断一下(显然,将以Mac为中心的文件夹更改为你正在使用的任何操作系统,等等)。

将猪挂在一起以能够与LZO一起工作

到目前为止,这对我来说是最烦人和最耗时的部分--不是因为它很难,而是因为网上有50个不同的教程,没有一个是那么有帮助的。不管怎么说,为了让它工作,我做了:

https://github.com/kevinweil/hadoop-lzo.

  • Compile it上从github克隆
  1. hadoop-lzo,以获取hadoop-lzo*.jar和本机*.o库。你需要在64位的机器上编译这段代码,
  2. 将本地库复制到$ hadoop _HOME/lib中,然后$PIG_HOME/lib
  3. Then配置hadoop和

,让

  1. 属性java.library.path指向lzo本地库。您可以在$HADOOP_HOME/conf/mapred-site.xml中使用以下命令执行此操作:

mapred.child.env JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/

  • 现在通过再次运行pig来尝试grunt shell,并确保一切仍然正常。如果没有,你可能把mapred-site.xml中的某些东西搞乱了,你应该仔细检查一下。

  • 现在,为了让大象鸟工作,你需要相当多的前提条件。这些都在上面提到的页面上列出,可能会发生变化,所以我不在这里指定它们。我要提到的是,这些版本非常重要。如果你得到一个不正确的版本并尝试运行ant,你会得到错误。因此,不要试图从brew或macports获取之前的请求,因为您可能会获得较新的版本。相反,只需下载tarball并为每个文件构建即可。

  • 命令: ant in the elephant bird文件夹以创建jar。

  • 为了简单起见,将您需要频繁注册的所有相关jar(hadoop-lzo-x.jar和elephant bird-x.jar)移动到您可以轻松找到它们的地方。/usr/local/lib/hadoop/...效果很好。

  • 尝试了一下!在grunt shell中加载普通文件和lzo。注册上面提到的相关jars,尝试加载一个文件,将输出限制为一个可管理的数字,然后转储它。无论您使用的是普通文本文件还是lzo。

都可以正常工作

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7277621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档