【问题标题】:Making Pig 0.12 work with hadoop 2.2.0使 Pig 0.12 与 hadoop 2.2.0 一起工作
【发布时间】:2015-10-26 18:59:55
【问题描述】:

我在远程集群上运行 hadoop 2.2.0,在单独的机器上运行 Pig 0.12。我需要让 Pig 与 hadoop 通信,第一步似乎是用 hadoop 2.2.0 构建 Pig 0.12。这是我所做的:

  1. 在 ivy/libraries.properties 中将 hadoop-core.version、hadoop-common.version、hadoop-hdfs.version、hadoop-mapreduce.version 更改为 2.2.0。
  2. 在 ivy.xml 中,将 hadoop-core 依赖项替换为 hadoop-client 依赖项。
  3. 使用“ant clean jar-all -Dhadoopversion=23”构建 pig

当我从命令行运行“pig”时,出现以下错误:

ERROR 2998: Unhandled internal error. org/apache/hadoop/hdfs/DistributedFileSystem

java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/DistributedFileSystem
        at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:173)
        at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:122)
        at org.apache.pig.impl.PigContext.connect(PigContext.java:301)
        at org.apache.pig.PigServer.<init>(PigServer.java:222)
        at org.apache.pig.PigServer.<init>(PigServer.java:207)
        at org.apache.pig.tools.grunt.Grunt.<init>(Grunt.java:47)
        at org.apache.pig.Main.run(Main.java:538)
        at org.apache.pig.Main.main(Main.java:156)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hdfs.DistributedFileSystem
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

【问题讨论】:

  • 我认为您采取了不必要的步骤。根据我的经验,只需在新下载的源文件夹中运行ant jar-withouthadoop –Dhadoopversion=23 就足够了。

标签: hadoop apache-pig


【解决方案1】:

如果您在项目中使用 maven 依赖项,仅使用命令 ant clean jar-all -Dhadoopversion=23ant jar-withouthadoop –Dhadoopversion=23 构建是不够的。您需要在本地 maven 存储库中安装由此创建的 jar,或在 pom.xml

中使用此依赖项(注意 hadoop2 的“分类器”标签)
<dependency>
  <groupId>org.apache.pig</groupId>
  <artifactId>pig</artifactId>
  <version>0.13.0</version>
  <classifier>h2</classifier>
</dependency>

【讨论】:

  • 那个分类器用 0.16 解决了我的问题
猜你喜欢
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
相关资源
最近更新 更多