L'accès à des fichiers dans HDFS à l'aide de Java
Je suis en train d'essayer d'accéder à un fichier dans le HDFS à l'aide des Api Java, mais à chaque fois j'obtiens un Fichier Non Trouvé. Code que j'utilise d'accès est :-
Configuration conf = new Configuration();
conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE);
conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_HDFS_SITE);
try {
FileSystem fs = FileSystem.get(conf);
Path hdfsfilePath = new Path(hdfsPath);
logger.info("Filesystem URI : " + fs.getUri());
logger.info("Filesystem Home Directory : " + fs.getHomeDirectory());
logger.info("Filesystem Working Directory : " + fs.getWorkingDirectory());
logger.info("HDFS File Path : " + hdfsfilePath);
if (!fs.exists(hdfsfilePath)) {
logger.error("File does not exists : " + hdfsPath);
}
Et voici la ligne de commande de sortie à partir du code.
[root@koversevms ~]# java -jar /tmp/thetus-incendiary-koverse-extension-fileutils-1.0-SNAPSHOT.jar
13/07/10 02:47:18 INFO fileutils.HadoopFileChecksumUtils: Filesystem URI : file:///
13/07/10 02:47:18 INFO fileutils.HadoopFileChecksumUtils: Filesystem Home Directory : file:/root
13/07/10 02:47:18 INFO fileutils.HadoopFileChecksumUtils: Filesystem Working Directory : file:/root
13/07/10 02:47:18 INFO fileutils.HadoopFileChecksumUtils: HDFS File Path : /usr/hadoop/sample/sample.txt
13/07/10 02:47:18 ERROR fileutils.HadoopFileChecksumUtils: File does not exists : /usr/hadoop/sample/sample.txt
Je suis nouveau sur hadoop, donc je ne sais pas ce qui ne va pas.
Avez-vous vérifié qu'il y a un tel fichier dans HDFS? Si le fichier est sur votre système local que cela ne signifie pas qu'il existe dans HDFS. Vous pouvez utiliser l'interface web (généralement YOUR_IP:50070/dfshealth.jsp) pour vérifier cela.
Oui Yatul il existe dans le HDFS. [root@koversevms ~]# hadoop fs -ls /usr/hadoop/sample/sample.txt 1 éléments -rw-r--r-- 1 root supergroupe 27848 2013-07-04 03:37 /usr/hadoop/sample/sample.txt
Je résolus. J'ai modifié le code pour utiliser le chemin au lieu de String tout en ajoutant xmls, il a travaillé. Précédemment:- conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE); Maintenant, conf.addResource(nouveau Chemin(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE));
Oui Yatul il existe dans le HDFS. [root@koversevms ~]# hadoop fs -ls /usr/hadoop/sample/sample.txt 1 éléments -rw-r--r-- 1 root supergroupe 27848 2013-07-04 03:37 /usr/hadoop/sample/sample.txt
Je résolus. J'ai modifié le code pour utiliser le chemin au lieu de String tout en ajoutant xmls, il a travaillé. Précédemment:- conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE); Maintenant, conf.addResource(nouveau Chemin(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE));
OriginalL'auteur Nayan | 2013-07-10
Vous devez vous connecter pour publier un commentaire.
Voici fragment de code posté dans le contexte de la réponse à cette question. Il faut résoudre votre question en dépit de l'intention de la question d'origine était différente. Le point principal dans votre code vous avez des questions à partir de schéma (
file://
). Veuillez vérifierfs.defaultFS
variable dans votre configuration.Ce qui est mal à cela? mvnrepository.com/artifact/org.apache.hadoop/hadoop-client/... bien sûr, la plupart du code est livré avec dépendances, pas avec hadoop-client-XXX.jar lui-même.
OriginalL'auteur Roman Nikitchenko