Java Hadoop:级联2.5.1和Hadoop 2.2.0的文件拷贝
我最近在MacOSX上安装了一个伪分布式Hadoop2.2.0集群,如下所示。然后,我使用Cascading 2.5.1尝试了基本的级联文件副本,但是当我使用maven编译项目时,我得到了以下错误:Java Hadoop:级联2.5.1和Hadoop 2.2.0的文件拷贝,java,maven,hadoop,cascading,Java,Maven,Hadoop,Cascading,我最近在MacOSX上安装了一个伪分布式Hadoop2.2.0集群,如下所示。然后,我使用Cascading 2.5.1尝试了基本的级联文件副本,但是当我使用maven编译项目时,我得到了以下错误: [ERROR] /Users/david/IdeaProjects//CascadingIntro/src/main/java/com/example/CascadingIntro.java:[24,24] cannot access org.apache.hadoop.mapred.JobCon
[ERROR] /Users/david/IdeaProjects//CascadingIntro/src/main/java/com/example/CascadingIntro.java:[24,24]
cannot access org.apache.hadoop.mapred.JobConf
class file for org.apache.hadoop.mapred.JobConf not found
我做错了什么?我该如何解决这个问题?我相信Cascading 2.5.1与Cascading.org上的Hadoop 2.2.0兼容
我的pom.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>CascadingIntro</groupId>
<artifactId>CascadingIntro</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>conjars.org</id>
<url>http://conjars.org/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>cascading</groupId>
<artifactId>cascading-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>cascading</groupId>
<artifactId>cascading-hadoop</artifactId>
<version>2.5.1</version>
</dependency>
</dependencies>
<build>
<finalName>CascadingIntro</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.CascadingIntro</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
您需要将hadoop客户端添加到依赖项中:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.2.0</version>
</dependency>
org.apache.hadoop
hadoop客户端
2.2.0
谢谢你的回答,我添加了这个,但是得到了这个:线程“main”java.lang.NoClassDefFoundError中的异常:级联/scheme/scheme由以下原因引起:java.lang.ClassNotFoundException:cascading.scheme.scheme
想法?一秒钟,可能就是类路径,对吗?我用程序集插件添加了所有依赖项,但我在线程“main”cascading.flow.planner.PlannerException中的mr作业异常的开头就正确了这一点:[无效字段类型(null);必须是字符串或整数:]
这可能是一个兼容性问题:。你的想法?“对我有用”
:你有没有可能把解决方案归档并下载下来。。。它大约是22MB,因为我在组装好的作业jar中包含了target/文件。我还添加了一个简单的运行脚本。谢谢你,我仔细阅读了,它编译得很好。快速提问,您知道我是如何告诉Cascading在hdfs而不是本地文件系统中查找副本的吗?
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.2.0</version>
</dependency>