看起来好像你正在使用JRE运行sqoop – 但JAVA_HOME设置为JDK

我试图在Ubuntu上设置sqoop(sqoop-1.4.3.bin__hadoop-1.0.0)。 我可以毫无问题地运行基本的sqoop帮助等。 当我运行以下操作时出现错误:

sqoop import --connect jdbc:mysql://localhost/test --table sales -m 1 13/04/19 10:35:24 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /opt/hadoop/hadoop-1.0.4 13/04/19 10:35:24 ERROR orm.CompilationManager: It seems as though you are running sqoop with a JRE. 13/04/19 10:35:24 ERROR orm.CompilationManager: Sqoop requires a JDK that can compile Java code. 13/04/19 10:35:24 ERROR orm.CompilationManager: Please install a JDK and set $JAVA_HOME to use it. 13/04/19 10:35:24 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Could not start Java compiler. at org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:176) 

我用谷歌搜索找到这个错误的答案,大多数答案指向将JAVA_HOME设置为JDK,我有(在〜/ .bashrc [在Ubuntu上])。

 $ echo $JAVA_HOME /usr/lib/jvm/jdk1.7.0_15 

这些是我设置的其他变量:

 export HADOOP_COMMON_HOME=/opt/hadoop/hadoop-1.0.4 export HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-1.0.4 export SQOOP_HOME=/opt/hadoop/sqoop-1.4.3.bin__hadoop-1.0.0 export PATH=$PATH:$SQOOP_HOME/bin 

我还将mysql jdbc驱动程序添加到lib文件夹中。

有什么想法我得到这个错误? 提前谢谢,迪迪

Scoop创建表示要导入的表的模式的java类。因此,要创建类,需要使用jdk而不是jre。

设置./bashrc的JAVA_HOME和$HADOOP_HOME/conf/hadoop-env.sh

这应该工作。

Sqoop最终将执行Hadoop shell脚本,因此我将确保您的Hadoop已正确配置为使用JDK而不是JRE。

我在Ubuntu上遇到了同样的问题。

我的$ JAVA_HOME被正确设置为/ usr / lib / jvm / java-7-openjdk-amd64,但查看/ usr / lib / jvm / java-7-openjdk-amd64 / bin我注意到“javac”不存在。 这就是Sqoop需要但却找不到的东西。

所以问题只是我的Java安装没有Java编译器。 解决方案非常简单:

 sudo apt-get install openjdk-7-jdk