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的使用相关推荐

  1. HDFS中JAVA API的使用(hadoop的文件上传和下载)

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  2. java hadoop api_Hadoop 系列HDFS的Java API( Java API介绍)

    HDFS的Java API Java API介绍 将详细介绍HDFS Java API,一下节再演示更多应用. Java API 官网 如上图所示,Java API页面分为了三部分,左上角是包(Pac ...

  3. 《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API

    本节书摘来异步社区<Hadoop MapReduce实战手册>一书中的第2章,第2.8节,作者: [美]Srinath Perera , Thilina Gunarathne 译者: 杨卓 ...

  4. 【收藏】HDFS的Java API使用

    Hadoop HDFS的Java API使用 https://blog.csdn.net/u010416101/article/details/88984618

  5. 使用HDFS客户端java api读取hadoop集群上的信息

    本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency><groupId>org.apache.hadoop</groupId ...

  6. Hadoop HDFS 的 Java API 操作方式

    想要使用Java API 的方式操作 Hadoop,尤其是hdfs(hadoop file system),必然需要引入jar包(jar包提供了丰富的API). 点中工程名, alt+enter,进入 ...

  7. Hadoop详解(四):HDFS shell操作和Java API操作

    1. HDFS环境准备 1.1 HDFS的格式化与启动 HDFS配置完之后就可以对其进行格式化操作.在NameNode所在机器上执行如下命令进行HDFS的格式化操作: hadoop namenode ...

  8. 分布式文件系统—HDFS—Java API操作

    原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...

  9. Java API操作HDFS

    一.问题介绍 1.基于HDFS 的Java API实现如下功能:(1)本地文件上传到HDFS:(2)从HDFS中下载文件到本地系统:(3)HDFS中目录的创建.删除.重命名:(4)查看目录中所有文件的 ...

  10. 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 ...

最新文章

  1. Nutch插件开发及发布流程
  2. iOS下载历史版本APP
  3. 计算机网络课制作双绞线实验,《计算机网络》课程实验——网线制作.pdf
  4. 书籍推荐:零基础入门学习Python
  5. Android 系统性能优化(55)---Android 性能优化之内存优化
  6. dev c++自动补全_Flutter 自动化测试-开篇
  7. 学生成绩abcde怎样划分_同等教育下,学生成绩差距较大,怎样避免学习中的“马太效应”?...
  8. 教你如何用若依创建子模块详细教程
  9. Arthas排查生产环境CPU飚高问题
  10. ORB-SLAM 解读(四) 单目初始化中特征匹配, 方向一致性检验
  11. qt使用QZxing生成二维码
  12. 连接服务器切换无线,怎么用路由器连接别人的wifi?
  13. 注意!!!谷歌python技术已流出,经过腾讯T6大佬总结,现在分享给大家(有实例分享)
  14. python3 安装 pillow报错
  15. 4-3 Vue的`:style`用法
  16. VirtualApp hook so及activity回调
  17. 关于自动化测试的定位及一些实践思考
  18. 成语学习记录20180820-26
  19. 保护眼睛的屏幕设置 Win2008R2中的Win7桌面效果设置
  20. 36-基于51单片机士壤湿度检测及自动浇花系统

热门文章

  1. 让Delphi的DataSnap发挥最大效率
  2. [Linux] 使用 SCP 指令,讓您傳送檔案至遠端、下載檔案
  3. 智能优化算法:社交网络搜索算法-附代码
  4. leetcode刷题日记-喧闹和富有
  5. 从零基础入门Tensorflow2.0 ----四、16.tfrecord基础API使用
  6. 将一副遥感影像裁剪为多幅图像
  7. android 权限问题吗,Android 6.0前后权限问题
  8. php分城市的源码,userlist.php 源代码在线查看 - 城市分类信息,门户网站,我做为地方信息网 资源下载 虫虫电子下载站...
  9. 查找算法---------斐波那契查找
  10. Kubernetes部署项目报错ImagePullBackOff日志提示rpc error: code..http: server gave HTTP response to HTTPS client