HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。
对分HDFS中的文件操作主要涉及一下几个类:
Configuration类:该类的对象封转了客户端或者服务器的配置。
FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);
通过FileSystem的静态方法get获得该对象。
FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。
具体如何对文件操作清下下面例子:
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils;public class HdfsTest {//创建新文件public static void createFile(String dst , byte[] contents) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path dstPath = new Path(dst); //目标路径//打开一个输出流FSDataOutputStream outputStream = fs.create(dstPath);outputStream.write(contents);outputStream.close();fs.close();System.out.println("文件创建成功!");}//上传本地文件public static void uploadFile(String src,String dst) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path srcPath = new Path(src); //原路径Path dstPath = new Path(dst); //目标路径//调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为falsefs.copyFromLocalFile(false,srcPath, dstPath);//打印文件路径System.out.println("Upload to "+conf.get("fs.default.name"));System.out.println("------------list files------------"+"\n");FileStatus [] fileStatus = fs.listStatus(dstPath);for (FileStatus file : fileStatus) {System.out.println(file.getPath());}fs.close();}//文件重命名public static void rename(String oldName,String newName) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path oldPath = new Path(oldName);Path newPath = new Path(newName);boolean isok = fs.rename(oldPath, newPath);if(isok){System.out.println("rename ok!");}else{System.out.println("rename failure");}fs.close();}//删除文件public static void delete(String filePath) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path path = new Path(filePath);boolean isok = fs.deleteOnExit(path);if(isok){System.out.println("delete ok!");}else{System.out.println("delete failure");}fs.close();}//创建目录public static void mkdir(String path) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path srcPath = new Path(path);boolean isok = fs.mkdirs(srcPath);if(isok){System.out.println("create dir ok!");}else{System.out.println("create dir failure");}fs.close();}//读取文件的内容public static void readFile(String filePath) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path srcPath = new Path(filePath);InputStream in = null;try {in = fs.open(srcPath);IOUtils.copyBytes(in, System.out, 4096, false); //复制到标准输出流} finally {IOUtils.closeStream(in);}}public static void main(String[] args) throws IOException {//测试上传文件//uploadFile("D:\\c.txt", "/user/hadoop/test/");//测试创建文件/*byte[] contents = "hello world 世界你好\n".getBytes();createFile("/user/hadoop/test1/d.txt",contents);*///测试重命名//rename("/user/hadoop/test/d.txt", "/user/hadoop/test/dd.txt");//测试删除文件//delete("test/dd.txt"); //使用相对路径//delete("test1"); //删除目录//测试新建目录//mkdir("test1");//测试读取文件readFile("test1/d.txt");}}
HDFS中JAVA API的使用相关推荐
- HDFS中JAVA API的使用(hadoop的文件上传和下载)
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- java hadoop api_Hadoop 系列HDFS的Java API( Java API介绍)
HDFS的Java API Java API介绍 将详细介绍HDFS Java API,一下节再演示更多应用. Java API 官网 如上图所示,Java API页面分为了三部分,左上角是包(Pac ...
- 《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API
本节书摘来异步社区<Hadoop MapReduce实战手册>一书中的第2章,第2.8节,作者: [美]Srinath Perera , Thilina Gunarathne 译者: 杨卓 ...
- 【收藏】HDFS的Java API使用
Hadoop HDFS的Java API使用 https://blog.csdn.net/u010416101/article/details/88984618
- 使用HDFS客户端java api读取hadoop集群上的信息
本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency><groupId>org.apache.hadoop</groupId ...
- Hadoop HDFS 的 Java API 操作方式
想要使用Java API 的方式操作 Hadoop,尤其是hdfs(hadoop file system),必然需要引入jar包(jar包提供了丰富的API). 点中工程名, alt+enter,进入 ...
- Hadoop详解(四):HDFS shell操作和Java API操作
1. HDFS环境准备 1.1 HDFS的格式化与启动 HDFS配置完之后就可以对其进行格式化操作.在NameNode所在机器上执行如下命令进行HDFS的格式化操作: hadoop namenode ...
- 分布式文件系统—HDFS—Java API操作
原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...
- Java API操作HDFS
一.问题介绍 1.基于HDFS 的Java API实现如下功能:(1)本地文件上传到HDFS:(2)从HDFS中下载文件到本地系统:(3)HDFS中目录的创建.删除.重命名:(4)查看目录中所有文件的 ...
- java 生成parquet文件格式,使用Java API将Parquet格式写入HDFS,而不使用Avro和MR
What is the simple way to write Parquet Format to HDFS (using Java API) by directly creating Parquet ...
最新文章
- Nutch插件开发及发布流程
- iOS下载历史版本APP
- 计算机网络课制作双绞线实验,《计算机网络》课程实验——网线制作.pdf
- 书籍推荐:零基础入门学习Python
- Android 系统性能优化(55)---Android 性能优化之内存优化
- dev c++自动补全_Flutter 自动化测试-开篇
- 学生成绩abcde怎样划分_同等教育下,学生成绩差距较大,怎样避免学习中的“马太效应”?...
- 教你如何用若依创建子模块详细教程
- Arthas排查生产环境CPU飚高问题
- ORB-SLAM 解读(四) 单目初始化中特征匹配, 方向一致性检验
- qt使用QZxing生成二维码
- 连接服务器切换无线,怎么用路由器连接别人的wifi?
- 注意!!!谷歌python技术已流出,经过腾讯T6大佬总结,现在分享给大家(有实例分享)
- python3 安装 pillow报错
- 4-3 Vue的`:style`用法
- VirtualApp hook so及activity回调
- 关于自动化测试的定位及一些实践思考
- 成语学习记录20180820-26
- 保护眼睛的屏幕设置 Win2008R2中的Win7桌面效果设置
- 36-基于51单片机士壤湿度检测及自动浇花系统
热门文章
- 让Delphi的DataSnap发挥最大效率
- [Linux] 使用 SCP 指令,讓您傳送檔案至遠端、下載檔案
- 智能优化算法:社交网络搜索算法-附代码
- leetcode刷题日记-喧闹和富有
- 从零基础入门Tensorflow2.0 ----四、16.tfrecord基础API使用
- 将一副遥感影像裁剪为多幅图像
- android 权限问题吗,Android 6.0前后权限问题
- php分城市的源码,userlist.php 源代码在线查看 - 城市分类信息,门户网站,我做为地方信息网 资源下载 虫虫电子下载站...
- 查找算法---------斐波那契查找
- Kubernetes部署项目报错ImagePullBackOff日志提示rpc error: code..http: server gave HTTP response to HTTPS client