Hadoop3-HDFS的java客户端编写


以下载为例,HDFS的java客户端编写主要分为下面4个步骤

1. 通过抽象类FileSystem的get静态方法获取文件系统hdfs的实例

2. 使用fs的open方法,打开hdfs文件系统的输入流

3. 打开本地输出流

4. 使用IOUtils的copy方法将hdfs的输入流拷贝到本地文件系统的输出流


在开始写之前,需要先引入HDFS的依赖包,包括hdfs和commons,可以通过maven去引入。

需要注意的是,若不做配置,默认拿到的是本地文件系统的实例,可以通过如下两种方法配置

1. conf.set(name,value)

2. 将hadoop的配置文件拷贝到项目的classpath下

具体代码如下;

Confguration conf = new Confguration();
FileSystem fs = FileSystem.get(conf);

Path src = new Path("hdfs://hostname:9000/filename")
FSDataInputStream is = fs.open(src);

FileOutputStream os = new FileOutputStream("/path-to-save");

IOUtils.copy(is,os);

当然,也可以不用这样写,因为HDFS的API已经封装的很好了,可以直接调用:

 fs.copyToLocalFile(src, dst);


如果是在windows下编写的话,可能会遇到权限问题,原因是当前用户无权限操作,可以这样解决:

1. 添加虚拟机运行参数 -DHADOOP_USER_NAME=hadoop

2. 在获取fs实例时,选择重载的get(URI,conf,User)方法



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值