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

在尝试使用Hadoop重命名目录时遇到了IllegalArgumentException,问题源于代码认为正在使用的文件系统是本地文件系统而非HDFS。尽管在core-site.xml中已将fs.default.name设置为hdfs,但配置似乎未被正确加载。解决方案包括确保配置文件位于类路径中或者直接在代码中设置所需参数。
摘要由CSDN通过智能技术生成

我使用以下程序重命名目录,但出现异常,这似乎仅是假设我正在使用本地文件系统.实际上,在我的core-site.xml中,我已经将fs.default.name设置为hdfs,而不是本地文件系统.

因此,我想知道配置文件的加载顺序,以及为什么它认为我正在使用本地文件系统.如何解决?谢谢

`

fs.default.name

hdfs://xiliu:54310

true`

hadoop.tmp.dir

/data1/hadoop/hdfs/tmp

true

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()在代码中设置所需的参数.

标签:mapreduce,hadoop,java

来源: https://codeday.me/bug/20191202/2086261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值