hadoop - 让 Pig 0.12 与 hadoop 2.2.0 一起工作

标签 hadoop apache-pig

我在远程集群上运行了 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 clean jar-all -Dhadoopversion=23ant jar-withouthadoop –Dhadoopversion=23 构建是不够的,如果你在你的项目。您需要在本地 Maven 存储库中安装由此创建的 jar 或在您的 pom.xml

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

关于hadoop - 让 Pig 0.12 与 hadoop 2.2.0 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026952/

相关文章:

python - 使用子进程启动 hadoop 作业但无法从标准输出获取日志

hadoop - 如何使用PIG处理图像文件

exception - PIG (v0.10.0) FILTER 操作期间异常 : java. lang.Integer cannot be cast to java.lang.String

hadoop - Oozie Pig Action 更改作业 jar 的 Guava 依赖性

java - 处理 Hadoop mapreduce 中键之间值的不均匀分布

hadoop - 尝试连接到远程Hadoop NameNode Web UI时,Web浏览器超时

sql - 如何在 impala 中使用 distinct

hadoop - 使用协处理器 HBase 创建二级索引

hadoop - 如何使用 PIG 统计独立用户数

hadoop - 想要在使用 pig 的记录中找到最大记录