Hadoop版本:  Hadoop 2.6.0

连接HDFS

String URL="hdfs://hadoop001:9000";

Configuration conf = new Configuration();

conf.set("fs.defaultFS", URL);

FileSystem fs = FileSystem.get(conf);

上传文件到HDFS

//获取本地文件的输入流

FileInputStream in=new FileInputStream("d://aaa.mp3");

//获取hdfs的输出流,默认是覆盖已存在的同名文件

//上传到hdfs根目录/

FSDataOutputStream output = fs.create(new Path("/bbb.mp3"));

//通过commons中的工具类copy文件到hdfs

IOUtils.copy(in, output);

简单方法

/*

* copyFromLocalFile(Path src, Path dst)

* 该方法对上面的过程进行了封装,使操作更加简单。

*/

fs.copyFromLocalFile(new Path("d://abc.mp3"), new Path("/bcd.mp3"));

读取HDFS文件

Path inHdfs=new Path("/bbb.mp3");

if(fs.exists(inHdfs)){

//获取hdfs的输入流

FSDataInputStream in = fs.open(inHdfs);

//获取本地文件的输出流

FileOutputStream out=new FileOutputStream("d://aaa.mp3");

//写文件到本地磁盘

//或使用IOUtils.copy(in, output);

byte[] buf=new byte[1024];

int next=0;

while((next=in.read(buf))!=-1){

out.write(buf, 0, next);

}

}

简单方法

//copyToLocalFile(Path src, Path dst)

fs.copyToLocalFile(inHdfs, new Path("c://aaa.mp3"));

注意:如果要从hdfs复制文件到windows系统,需要设置useRawLocalFileSystem的值为true。否则会抛出空指针异常。

默认是使用HDFS的文件系统,如果是windows系统,需要使用原生的本地文件系统。

(???这里不是很明白,没读懂源码。)

/*

* delSrc:是否删除原文件

* Path src:源文件

* Path dst:目的文件

* useRawLocalFileSystem:是否使用原生本地文件系统

*/

fs.copyToLocalFile(false,new Path("/f1/bbb.pdf"), new Path("c://abc.pdf"),true);

删除HDFS文件

/*

*  delete(Path f, boolean recursive)

*  当删除非空目录时,recursive必须为true

*/

fs.delete(new Path("/file1), true);

创建目录

//在hdfs的根目录下创建文件夹

foofs.mkdirs(new Path("/foo"));

//文件夹的默认权限是755,也可以通过第二个参数设置权限mkdirs(Path, FsPermission)

如果文件夹的目录是相对路径,hdfs会做如下处理:

源码位置:FileSystem#fixRelativePart()

if (p.isUriPathAbsolute()) { //如果是绝对路径(/开始的路径),直接使用

return p;

} else {//如果是相对路径,在当前用户的home目录下创建该目录

return new Path(getWorkingDirectory(), p);

}

例如你在windows系统中执行的操作,假设当前windows的账户名是Administrator(管理员账户登陆),那么在hdfs中的home目录即:/user/Administrator。

fs.mkdirs(new Path("foo"));

执行完上面的代码,就会在hdfs中创建目录结构: /user/Administrator/foo

Thanks a lot!

END!

hdfs java api 权限_HDFS Java API 详解相关推荐

  1. java 接口 返回值_java api返回值的标准化详解

    api返回值的标准化 例如 {"status":200,"message":"操作成功","data":"{\ ...

  2. Javadoc (Java API 文档生成器)详解 [Javadoc 概述][Javadoc 标签][Javadoc 命令][Javadoc 生成 API 文档]

    您的"关注"和"点赞",是认可,是支持,是动力. 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 文章目录 1 Javad ...

  3. Java开源项目Hibernate包作用详解

    Java开源项目Hibernate包作用详解 本文引自:http://hi.baidu.com/nick6610/blog/item/70b58afa0d0eab9259ee90f7.html Jav ...

  4. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  5. solidworks api二次开发实例详解_Solidworks开发语言对比及分析

    很多初学Solidworks二次开发的同学,也许都会纠结使用何种语言进行二次开发.对于Solidworks二次开发的语言,官方有VBA,VB.NET,C#以及C++,四种语言. 用户通常会有如下疑问, ...

  6. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  7. Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)

    Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff详解(二) 标签(空格分隔): Android基础入门教程 本节引言: 上一节,我们学习了Xf ...

  8. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  9. Java自动日志监控框架auto-log详解

    Java自动日志监控框架auto-log详解 1. 需求概述 2. auto-log简介 2.1 auto-log定义 2.2 auto-log目的 2.3 auto-log特性 2.4 注解说明 2 ...

最新文章

  1. python self的含义
  2. USACO1.4 The Clocks(clocks)
  3. 【struts2+hibernate+spring项目实战】Jfreechart工具使用(ssh项目实战)
  4. 如何获得所有CSDN勋章的获取方式?
  5. React事件绑定几种方法测试
  6. 轻松的java,轻松进行Java Portlets
  7. XP 远程连接window 2008 网络级别身份验证问题解决方法
  8. Windows快捷键(三)—— 触摸板手势
  9. 陈经纶2021年高考成绩查询时间,北京30余所高中2017年高考成绩汇总
  10. 获取手机号码归属地工具类
  11. 怎么防止服务器被入侵?
  12. 温故知新(五)——三参数陷波滤波器离散化推导及MATLAB实现
  13. 转发微雪课堂的STM32CubeMX系列教程
  14. python when函数_python help函数
  15. 语音基础知识和处理流程(TTS小白入门)
  16. Suricata IPS-NFQ模式
  17. 低眉信手续续弹,说尽心中无限事——python分支结构
  18. 读取解压h5文件为图片
  19. 第一期“重庆市市政设计研究院有限公司BIM技术应用专项培训营”活动圆满举行
  20. mysql8.0.30安装及数据导入

热门文章

  1. java上传csv文件上传_java处理csv文件上传示例详解
  2. Java BigInteger类| hashCode()方法与示例
  3. math.fabs_带有Python示例的math.fabs()方法
  4. MySQL中你必须知道的10件事,1.5万字!
  5. Redis 属于单线程还是多线程?不同的版本有什么区别?
  6. Visual Studio 2010 中JS注释制作
  7. mysql phpmyadmin远程_phpmyadmin登录远程mysql数据库
  8. 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD
  9. python 计量经济 35岁 工作_Python在计量经济与统计学中的应用
  10. java语言执行过程_Java程序的运行过程(执行流程)分析