2015-01-21 2 views
1

Привет Я пытаюсь создать небольшую программу Spark в Java. Я создаю объект конфигурации Hadoop, как показано ниже:Объект конфигурации Hadoop, не указывающий на файловую систему hdfs

Configuration conf = new Configuration(false); 
conf.addResource(new Path("/dir/core-site.xml")); 
conf.addResource(new Path("/dir/hdfs-site.xml")); 
conf.addResource(new Path("/dir/yarn-site.xml")); 

Когда я звоню следующий я получаю файловую систему, но она указывает на локальной файловой системе, а не HDFS файловой системы

FileSystem fs = FileSystem.get(conf); 

Пожалуйста, руководство I Я новичок в Hadoop. Заранее спасибо.

ответ

0

Я обычно держать core-site.xml (наряду с другими файлами) в пути к классам и получить конфигурацию следующим образом:

Configuration conf = new Configuration(); 
FileSystem localfs = FileSystem.getLocal(conf); 
FileSystem hdfs = FileSystem.get(conf); 

Вот содержание моего core-site.xml:

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
    <property> 
    <name>fs.default.name</name> 
    <value>hdfs://{hadoop-server-addr}</value> 
    </property> 
</configuration> 
+0

Привет, даже если я не укажу conf.set ("fs.defaultFS"), он по-прежнему возвращает мне объект локальной файловой системы – u449355

+0

В моем случае я генерирую жирную банку, возможно, в вашем случае файлы conf не находятся в classpath ваших узлов. – bachr

0

Добавить свой hdfs-site.xml и core-site.xml в путь к классу. И используйте следующий код.

Configuration conf = new Configuration(); 
FileSystem hdfs = FileSystem.newInstance(conf); 

Он выберет конфигурации, указанные в xmls.

Смежные вопросы