2012-05-10 5 views
1

J'ai créé un fichier .java pour l'exécuter sur cloudera hadoop. Pour le compiler,Comment exécuter et compiler le programme java sur hadoop 0.23.0 MR2

javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java 

Erreurs:

MultiFetch.java:12: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.Configuration; 
         ^
MultiFetch.java:13: package org.apache.hadoop.conf does not exist 
import org.apache.hadoop.conf.Configured; 
         ^
MultiFetch.java:14: package org.apache.hadoop.fs does not exist 
import org.apache.hadoop.fs.Path; 
        ^
MultiFetch.java:15: package org.apache.hadoop.io does not exist 
import org.apache.hadoop.io.Text; 

Suis-je un mauvais choix de jar pour exécuter le fichier ou que je me trompe en suivant la procédure pour compiler le fichier java. S'il vous plaît laissez certains corriger cette erreur.

+0

Il semble que vous ayez un espace dans le chemin de votre argument '-classpath' entre' hadoop-mapreduce-client-'et' core-'. –

Répondre

1

La plupart des erreurs ci-dessus sont liées à ne pas être en mesure de trouver des bibliothèques Hadoop pour compiler votre exemple d'application.

Un exemple de commande Java Map/Reduce exemple construction est comme ci-dessous:

$javac \ 
-classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar \ 
-d wordcount_classes \ 
WordCount.java 

Dans mon cas, le fichier jar est hadoop-0.20.203.1-SNAPSHOT-core.jar. Si vous jetez un oeil à votre commande, vous verrez qu'il ya quelque chose ne va pas:

javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java 

Ce que vous pouvez faire est que vous pouvez vous construire en utilisant simplement déguster classpath comme indiqué dans l'échantillon ci-dessus.

Questions connexes