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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat就是这么简单

什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。 为什么我们需要用到Tomcat 如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访…

java if两个条件_java(3) if结构

一、基本if结构1、流程图1)输入输出2)判断和分支3) 流程线1.1 简单的if条件判断if(表达式){//表达式为true,执行{}中的代码}示例1:如果张三的Java成绩大于98分,那么老师奖励他一个MP4。1 public classPractice1 {2 pu…

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

什么是Servlet? Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的,运行在服务器端。 为什么要用到Servlet? 我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能,普通的java技术是非常难完成…

java kafka 分区_Java kafka如何实现自定义分区类和拦截器

生产者发送到对应的分区有以下几种方式:(1)指定了patition,则直接使用;(可以查阅对应的java api, 有多种参数)(2)未指定patition但指定key,通过对key的value进行hash出一个patition;(3)patition和key都未指定&#xff…

Servlet第三篇【request和response简介、response的常见应用】

response、request对象 Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象 既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。respon…

strip string java_Java StringUtils.strip方法代码示例

import org.apache.commons.lang.StringUtils; //导入方法依赖的package包/类public static void copyResourceFolder(String resourceFolder, String destDir)throws IOException {final File jarFile new File(Util.class.getProtectionDomain().getCodeSource().getLocatio…

spring三种注入方式

设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 Primary 一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常 使用Primary 来告诉Spring 注入哪个实现…

java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

1.一个程序在 JVM 中运行的完整流程java程序执行流程.JPG说明:① 类加载器把字节码加载到方法区② 方法区的字节码被 JVM new,在堆内存中生成字节码对象③ 字节码对象被 GC 的要求有:该类没有在其他任何地方被引用;该类的所有的实…

Servlet第四篇【request对象常用方法、应用】

什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。 简单来说,要…

java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理

双击“startup.bat”启动Tomcat,控制台默认标题是Tomcat,如下图:修改标题很容易,编辑catalina.bat这个文件(跟startup.bat在同级目录下),编辑的时候建议使用notepad、editplus之类的工具。然后找到如下代码片段(大约在…

Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术&#xff1…

mysql 视图sql_SQL的视图

1、什么是视图视图是虚拟的表,是一个存储的查询,虽然不需要实际的物理存储,但是也被看作是一个数据库对象;它与包含数据的表不一样,它不包含任何列或数据,它只是包含使用时动态检索数据的查询,并…

Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】

什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session 如果说Cookie是检查用户身上的”…

java 异步阻塞_大白话搞懂什么是同步/异步/阻塞/非阻塞

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼前言在最近的一些面试中,跟应聘者聊了比较多关于“同步/异步,阻塞/非阻塞”相关的话题,发现大家对于这些概念的理解都比较模糊,甚至有的同学会反问“他们不就是同一个东西吗&#xff…

python 3.9.0a0_Python 3.9.0 稳定版发布

IT之家10月6日消息据网友投递,Python 3.9.0 稳定版(Python 3.9.0 final)昨日正式发布,它包含许多新功能和优化,禁止在Windows 7上安装,且默认提供64位安装程序。IT之家了解到,Python 3.9.0 alpha 1首个迭代版本于2019 …

Tomcat+Servlet面试题都在这里

下面是我整理下来的Servlet知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 找到Tomcat目录下的conf文件夹进入conf文件夹里面找到server.xml文件打开server.xml文件在server.xml文件里面找到下列…

java sdk下载_Java Sdk下载 | 保利威帮助中心

播放界面开发前准备1.小程序微信开发者后台设置-开发设置-服务器域名中配置 [request合法域名]开始开发1.获取频道直播播放地址index.wxmlindex.js选项说明uid类型:String说明:直播账户idvid类型:String说明:直播频道idvideoConte…

mysql union 与 union all 语法及用法

1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中。语法为: select column,......from table1union [all]select column,...... from table2...在多个select 语句中,对应的列应该具有相同的字段属性&#xff0c…

java反射 获取方法参数名_java 反射借助 asm 获取参数名称最优雅简单的方式

背景说明最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式。jdk7 及其以前,是无法通过反射获取参数名称的。jdk8 可以获取,但是要求指定 -parameter 启动参数,限制较多。期间尝试过类似于 Mybatis 使…

Golang基础知识入门详解

Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 语言的简洁和性能,而且还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。 在 Go…