hadoop—看起来您运行的是带有jre的sqoop—但java\u的主页设置为jdk

v09wglhw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(564)

我试着在ubuntu上设置sqoop(sqoop-1.4.3.bin\uhadoop-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)

我在google上找到了这个错误的答案,大多数答案都指向将javau 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文件夹中。
你知道我为什么会犯这个错误吗?谢谢你,迪迪

0md85ypi

0md85ypi1#

sqoop最终将执行hadoopshell脚本,因此我将确保hadoop被正确配置为使用jdk而不是jre。

azpvetkf

azpvetkf2#

scoop创建表示要导入的表的模式的java类。因此,要创建类,您需要jdk而不是jre。
将java\u设置为 ./bashrc 以及 $HADOOP_HOME/conf/hadoop-env.sh 也。
这应该管用。

nzkunb0c

nzkunb0c3#

我在ubuntu上也有同样的问题。
我的$javau 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

相关问题