4 votes

Il semble que vous exécutez sqoop avec un JRE, mais que JAVA_HOME soit défini comme JDK.

J'ai essayé de configurer sqoop (sqoop-1.4.3.bin__hadoop-1.0.0) sur Ubuntu. Je peux lancer l'aide de base de sqoop etc. sans problème. Lorsque j'exécute ce qui suit, j'obtiens une erreur :

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)

J'ai fait des recherches sur Internet pour trouver une réponse à cette erreur et la plupart des réponses indiquent de définir JAVA_HOME sur votre JDK, ce que j'ai fait (dans ~/.bashrc [sur Ubuntu]).

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

Ce sont les autres variables que j'ai définies :

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

J'ai également ajouté le pilote mysql jdbc dans le dossier lib.

Une idée de la raison pour laquelle j'obtiens cette erreur ? Merci d'avance, Diddy

7voto

Mark Vickery Points 838

Scoop crée des classes java qui représentent le schéma de la table que vous importez. Pour créer ces classes, vous avez donc besoin du jdk au lieu du jre.

Définissez le JAVA_HOME dans le fichier ./bashrc et le $HADOOP_HOME/conf/hadoop-env.sh également.

Ça devrait marcher.

1voto

Jarek Jarcec Cecho Points 1736

Sqoop exécutera éventuellement le shell Hadoop script, donc je m'assurerais que votre Hadoop est configuré correctement pour utiliser le JDK au lieu du JRE.

0voto

claudod Points 156

J'ai eu le même problème sur Ubuntu.

Mon $JAVA_HOME était correctement défini à /usr/lib/jvm/java-7-openjdk-amd64, mais en regardant dans /usr/lib/jvm/java-7-openjdk-amd64/bin, j'ai remarqué que "javac" n'y était pas. C'est ce dont Sqoop a besoin mais qu'il ne trouve pas.

Le problème était donc simplement que mon installation de Java était livrée sans compilateur Java. La solution était alors très simple :

sudo apt-get install openjdk-7-jdk

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X