hdfs java api 权限_HDFS Java API 详解
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 详解相关推荐
- java 接口 返回值_java api返回值的标准化详解
api返回值的标准化 例如 {"status":200,"message":"操作成功","data":"{\ ...
- Javadoc (Java API 文档生成器)详解 [Javadoc 概述][Javadoc 标签][Javadoc 命令][Javadoc 生成 API 文档]
您的"关注"和"点赞",是认可,是支持,是动力. 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 文章目录 1 Javad ...
- Java开源项目Hibernate包作用详解
Java开源项目Hibernate包作用详解 本文引自:http://hi.baidu.com/nick6610/blog/item/70b58afa0d0eab9259ee90f7.html Jav ...
- java多线程中的join方法详解
java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...
- solidworks api二次开发实例详解_Solidworks开发语言对比及分析
很多初学Solidworks二次开发的同学,也许都会纠结使用何种语言进行二次开发.对于Solidworks二次开发的语言,官方有VBA,VB.NET,C#以及C++,四种语言. 用户通常会有如下疑问, ...
- Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例
Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...
- Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff详解(二) 标签(空格分隔): Android基础入门教程 本节引言: 上一节,我们学习了Xf ...
- 牛客网 Java 工程师能力评估 20 题 - 详解
牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...
- 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 ...
最新文章
- python self的含义
- USACO1.4 The Clocks(clocks)
- 【struts2+hibernate+spring项目实战】Jfreechart工具使用(ssh项目实战)
- 如何获得所有CSDN勋章的获取方式?
- React事件绑定几种方法测试
- 轻松的java,轻松进行Java Portlets
- XP 远程连接window 2008 网络级别身份验证问题解决方法
- Windows快捷键(三)—— 触摸板手势
- 陈经纶2021年高考成绩查询时间,北京30余所高中2017年高考成绩汇总
- 获取手机号码归属地工具类
- 怎么防止服务器被入侵?
- 温故知新(五)——三参数陷波滤波器离散化推导及MATLAB实现
- 转发微雪课堂的STM32CubeMX系列教程
- python when函数_python help函数
- 语音基础知识和处理流程(TTS小白入门)
- Suricata IPS-NFQ模式
- 低眉信手续续弹,说尽心中无限事——python分支结构
- 读取解压h5文件为图片
- 第一期“重庆市市政设计研究院有限公司BIM技术应用专项培训营”活动圆满举行
- mysql8.0.30安装及数据导入
热门文章
- java上传csv文件上传_java处理csv文件上传示例详解
- Java BigInteger类| hashCode()方法与示例
- math.fabs_带有Python示例的math.fabs()方法
- MySQL中你必须知道的10件事,1.5万字!
- Redis 属于单线程还是多线程?不同的版本有什么区别?
- Visual Studio 2010 中JS注释制作
- mysql phpmyadmin远程_phpmyadmin登录远程mysql数据库
- 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD
- python 计量经济 35岁 工作_Python在计量经济与统计学中的应用
- java语言执行过程_Java程序的运行过程(执行流程)分析