0

我很难让 sqoop1 在 hadoop2 上工作。我总是运行 intCaused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.Tool错误,这表明 sqoop1 正在尝试使用 hadoop1。但我已经从http://www.us.apache.org/dist/sqoop/1.4.5/下载了带有 hadoop 2.0.4-alpha 版本的 sqoop1 jar 。

那为什么它不适用于hadoop2?

PS:我已经努力让 sqoop2 工作,但我在设置中遇到了很多问题。

此外,这篇文章http://mmicky.blog.163.com/blog/static/1502901542013118115417262/表明它应该可以工作,但我一直遇到这个 ClassNotFoundException。

4

1 回答 1

0

我解决了这个问题。我设置的任何类路径都可能被 hadoop 可执行文件覆盖。所以我不得不在调用 java 命令的地方修改 hadoop 可执行文件,并在我的 hadoop jar 的类路径中添加一个 -cp 标志,如下所示:

exec "$JAVA" -cp "$CLASSPATH:/usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/common/ :/usr/local/Cellar/hadoop/2.4.1/libexec/share/ hadoop/common/lib/ : /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/hdfs/:/usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/ hdfs/ lib/ :/usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/mapreduce/ :/usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/mapreduce/lib/ :/ usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/tools/ : /usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/tools/lib/ :/usr/local/ Cellar/hadoop/2.4.1/libexec/share/hadoop/yarn/ :/usr/local/Cellar/hadoop/2.4.1/libexec/share/hadoop/yarn/lib/ " $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@ "

于 2014-08-15T18:00:25.477 回答