hadoop学习笔记(四)Wrong FS报错

在使用Hadoop API时,遇到'Wrong FS: hdfs://namenode:9000... expected: file:///...'的问题。错误原因在于Configuration实例化时未加载core-site.xml,导致默认FS设置不正确。解决方案是在代码中明确加载core-site.xml配置文件,例如:`conf.addResource(new Path("/home/ptrdu/hadoop-0.20.2/conf/core-site.xml"));`这样可以确保使用正确的HDFS路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

             Wrong FS  expected: file:/// 问题

 对于一个简单的hadoop api调用问题,经常出现以下报错:

Configuration conf = new  Configuration();

FileSystem fs = FileSystem.get(conf);

fs.copyFromLocalFile(new Path(“/home/ptrdu/input/file1),new Path( "hdfs://namenode:9000/user/ptrdu/move_input/"));

只是一段简单的代码,用于从本地传送数据到hdfs

wrong FShdfs://namenode:9000/home/ptrdu/move_input     exptected:file:///报错

主要原因是Configuration conf = new  Configuration();这一段代码默认获得的是hadoop-default.xmlhadoop-site.xml文件,而未获取core-site.xml文件。

<configuration>

<property>

  <name>fs.default.name</name>

  <value>hdfs://namenode:9000</value>

</property>

<property>

  <name>hadoop.tmp.dir</name>

  <value>/home/ptrdu/tmp</value>

</property>

</configuration>

core-site指定了hdfs的路径,所以会造成wrong fs的报错

修改方法:

Configuration conf = new  Configuration();

conf.addResource(new Path("/home/ptrdu/hadoop-0.20.2/conf/core-site.xml"));

FileSystem fs = FileSystem.get(conf);

fs.copyFromLocalFile(new Path(“/home/ptrdu/input/file1),new Path( "hdfs://namenode:9000/user/ptrdu/move_input/"));

要将"/home/ptrdu/hadoop-0.20.2/conf/core-site.xml"路径转化为Path型,不然仍会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值