微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-hadoop中配置文件的加载顺序是什么?

我使用以下程序重命名目录,但出现异常,这似乎仅是假设我正在使用本地文件系统.实际上,在我的core-site.xml中,我已经将fs.default.name设置为hdfs,而不是本地文件系统.
因此,我想知道配置文件的加载顺序,以及为什么它认为我正在使用本地文件系统.如何解决?谢谢

`

<configuration>
<property>
 <name>fs.default.name</name>
 <value>hdfs://xiliu:54310</value>
  <final>true</final>`
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/data1/hadoop/hdfs/tmp</value>
  <final>true</final>
 </property>
</configuration>





public class fsutil extends Configured
{
  private static Configuration conf;

  static
  {
    conf = new Configuration( );
  }

public static void rename( Path srcPath, Path tgtPath)
    throws IOException
  {
    FileSystem fs = FileSystem.get( conf);
    fs.rename( srcPath, tgtPath);
  }


 public static void main(String[]args){
try {
fsutil.rename(new Path("hdfs://xiliu:54310/user/warehouse/test"), new Path("hdfs://xiliu:54310/user/warehouse/testtmp"));

} catch (IOException e) {
        e.printstacktrace();
    }
  }
}




Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://xiliu:54310/user/warehouse/test, expected: file:///
    at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:354)
    at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:54)
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:367)
    at org.apache.hadoop.fs.FileSystem.isDirectory(FileSystem.java:702)
    at org.apache.hadoop.fs.ChecksumFileSystem.rename(ChecksumFileSystem.java:402)
    at com.business.cloudbase.hadoop.fs.fsutil.rename(fsutil.java:251)
    at com.business.cloudbase.hadoop.fs.fsutil.main(fsutil.java:602)

解决方法:

看起来配置文件不在类路径中,并且fs.default.name参数认为file:///.

两种选择

>将配置文件放在类路径中,以便代码选择它.
>使用Configuration.set()代码中设置所需的参数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐