Я пытаюсь получить доступ к файлу в HDFS с использованием Java API, но каждый раз, когда я получаю файл не найден. Код, который я использую для доступа:Доступ к файлам в HDFS с использованием Java
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);
}
И вот командная строка, выводимая из кода.
[[email protected] ~]# 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
Я новичок в hadoop, поэтому не знаю, что происходит не так.
Спасибо, Nayan
Вы проверили, есть ли такой файл в HDFS? Если файл находится в вашей локальной системе, это не значит, что он существует в HDFS. Вы можете использовать веб-интерфейс (обычно http: // YOUR_IP: 50070/dfshealth.jsp), чтобы проверить это. – yatul
Да Yatul существует в HDFS. [root @ koversevms ~] # hadoop fs -ls /usr/hadoop/sample/sample.txt Найдено 1 продуктов -rw-r - r-- 1 супергруппа 27848 2013-07-04 03:37/usr/hadoop/sample/sample.txt – Nayan
Я решил это. Я изменил код для использования пути вместо String, добавив xmls, он сработал. Ранее: - conf.addResource (FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE); conf.addResource (новый путь (FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE)); – Nayan