Как прочитать файл из Hadoop, используя Java без командной строки - PullRequest
2 голосов
/ 05 марта 2012

Я хотел прочитать файл из системы hadoop, я мог бы сделать это, используя следующий код

String uri = theFilename;
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
InputStream in = null;
try {
  in = fs.open(new Path(uri));
  IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
  IOUtils.closeStream(in);
}

Чтобы запустить этот файл, мне нужно запустить hadoop jar myjar.jar com.mycompany.cloud.CatFile / filepathin_hadoop Это работает. Но как я могу сделать то же самое из другой программы, я имею в виду без использования команды Jadoop Jar.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Вы можете добавить core-site.xml к этому объекту конфигурации, чтобы он знал URI для вашего экземпляра HDFS.Этот метод требует установки HADOOP_HOME .

Configuration conf = new Configuration();
Path coreSitePath = new Path(System.getenv("HADOOP_HOME"), "conf/core-site.xml");
conf.addResource(coreSitePath);
FileSystem hdfs = FileSystem.get(conf);
// rest of code the same

Теперь без использования hadoop jar вы можете открыть соединение с вашим экземпляром HDFS.

Редактировать: необходимо использовать conf.addResource (путь).Если вы используете строковый аргумент, ищите имя файла в classpath.

0 голосов
/ 26 марта 2013

Установлен другой метод конфигурации (имя_параметра, значение).
Если вы используете этот метод, вам не нужно указывать расположение файла core-site.xml.Это было бы полезно для доступа к HDFS из удаленного местоположения, такого как веб-сервер.

Использование следующим образом:

    String uri = theFilename;
    Configuration conf = new Configuration();

    conf.set("fs.default.name","hdfs://10.132.100.211:8020/"); 
    FileSystem fs = FileSystem.get(conf);
// Rest of the code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...