【Hadoop】HDFS的常见Java操作


本文仅记录上传文件、下载文件和删除文件三个操作。这三个操作有着相似的逻辑,都是先创建配置对象,然后获取操作HDFS的对象,最后再进行各自的功能实现。

1. 上传文件到HDFS

创建配置对象后,指定HDFS的地址,随后获取操作HDFS的对象,在该对象的基础上获取HDFS的输出流,最后通过工具类实现把本地输入流拷贝到HDFS输出流里面,实现本地文件上传到HDFS。

//创建配置对象
Configuration conf = new Configuration();
//指定HDFS的地址
conf.set("fs.defaultFS", "hdfs://bigData01:9000");
//获取操作hdfs的对象
FileSystem fileSystem = FileSystem.get(conf);
//获取HDFS的输出流
FSDataOutputStream fos = fileSystem.create(new Path("/win11.txt"));
//获取本地文件的输入流
FileInputStream fis = new FileInputStream("D:\\win11.txt");
//上传文件:通过工具类实现把输入流拷贝到输出流里面,实现本地文件上传到HDFS
IOUtils.copyBytes(fis, fos, 1024, true);

2. 下载HDFS文件

创建配置对象后,指定HDFS的地址,随后获取操作HDFS的对象,在该对象的基础上获取HDFS的输入流,最后通过工具类实现把HDFS输入流拷贝到本地输出流里面,实现HDFS文件下载到本地。

//创建配置对象
Configuration conf = new Configuration();
//指定HDFS的地址
conf.set("fs.defaultFS", "hdfs://bigData01:9000");
//获取操作hdfs的对象
FileSystem fileSystem = FileSystem.get(conf);
//获取HDFS系统输入流
FSDataInputStream fis= fileSystem.open(new Path("/LICENSE.txt"));
//获取本地系统的输出流
FileOutputStream fos = new FileOutputStream("D:\\LICENSE.txt");
//下载文件
IOUtils.copyBytes(fis, fos, 1024, true);

3. 删除HDFS文件

fileSystem.delete()的第一个参数是HDFS中的文件地址,第二个参数代表递归删除,若要删除目录,则第二个参数有用,若删除的是文件,则忽略第二个参数。

//创建配置对象
Configuration conf = new Configuration();
//指定HDFS的地址
conf.set("fs.defaultFS", "hdfs://bigData01:9000");
//获取操作hdfs的对象
FileSystem fileSystem = FileSystem.get(conf);
boolean flag = fileSystem.delete(new Path("/LICENSE.txt"), true);
if(flag){
    System.out.println("删除成功");
}else{
    System.out.println("删除失败");
}
posted @ 2023-01-19 11:51  ccql  阅读(7)  评论(0编辑  收藏  举报  来源