我尝试在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文件夹中。
为什么我收到此错误的任何想法? 提前致谢, 老爹
答案 0 :(得分:5)
Scoop创建表示要导入的表的模式的java类。因此,要创建类,需要使用jdk而不是jre。
也可以在./bashrc
和$HADOOP_HOME/conf/hadoop-env.sh
中设置JAVA_HOME。
这应该有效。
答案 1 :(得分:1)
Sqoop最终会执行Hadoop shell脚本,所以我会确保你的Hadoop配置正确,以便使用JDK代替JRE。
答案 2 :(得分:0)
我在Ubuntu上遇到了同样的问题。
我的$ JAVA_HOME已正确设置为/ usr / lib / jvm / java-7-openjdk-amd64,但查看/ usr / lib / jvm / java-7-openjdk-amd64 / bin我发现&#34 ; javac的"不在那里。这是Sqoop需要但却找不到的东西。
所以问题只是我的Java安装没有Java编译器。解决方案非常简单:
sudo apt-get install openjdk-7-jdk