4

我尝试在 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 文件夹中。

任何想法为什么我会收到此错误?在此先感谢,老爹

4

3 回答 3

7

Scoop creates java classes that represent the schema of the table you are importing in. So to create the classes you need the jdk instead of the jre.

Set the JAVA_HOME in the ./bashrc and the $HADOOP_HOME/conf/hadoop-env.sh as well.

That should work.

于 2013-04-19T15:56:27.320 回答
1

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

于 2013-04-20T15:16:28.243 回答
0

我在 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
于 2016-08-21T22:43:55.703 回答