Опечатка в слове "hdfs" дает мне: "java.io.IOException: нет файловой системы для схемы: hdfs".Использование FileSystem lib поверх hadoop 2.7.7 - PullRequest
0 голосов
/ 12 февраля 2019

При использовании FileSystem.get(URI.create("hdfs://localhost:9000/"), configuration) я получаю сообщение об ошибке "Опечатка в слове hdfs", при попытке запустить код выдает IOException:

    java.io.IOException: No FileSystem for scheme: hdfs
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2658)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2665)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2701)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2683)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:372)
at com.oracle.hadoop.client.Test.main(Test.java:53)

Я уже пытался использовать по-разномучтобы использовать вызов hdfs, я использую библиотеки для hadoop 2.7.7

Вот мой текущий код:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.log4j.BasicConfigurator;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;

public class Test {

 public static void main(String []args) {
    Configuration conf = new Configuration();
    InputStream in = null;

    try {
        FileSystem fs = FileSystem.get(URI.create("hdfs://localhost:9000/"), conf);
        in = fs.open(new Path(uri));
        IOUtils.copyBytes(in, System.out, 4096, false);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        IOUtils.closeStream(in);
    }  
   }

1 Ответ

0 голосов
/ 12 февраля 2019

На самом деле, я только что добавил эту зависимость maven: http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs/2.7.7 к maven pom.xml и проблема решена.

...