当前位置: 首页 > ops >正文

HDFS的客户端操作

HDFS删除文件和目录

我们来学习如何删除文件。这里要用的API是fs.delete,用于删除 HDFS 中的文件或目录。

基本思路是:

  1. 获取文件系统
  2. 调用fs.delete删除指定目录下的文件
  3. 关闭文件系统连接。

我们来看看fs.delete的格式:fs.delete(要删除的路径,是否递归删除) 。

第一个参数 new Path("/xiyou") 指定了要删除的路径,/xiyou 是 HDFS 中的目录或文件路径。

第二个参数 true 表示递归删除。如果路径是一个目录,且目录下有子文件或子目录,设置为 true 可以将整个目录及其内容全部删除。如果设置为 false,则只能删除空目录。

好了,搞思路和格式之后,我们开始写代码。

参考代码如下:

@Test

public void testDelete() throws IOException, InterruptedException, URISyntaxException{

// 1 获取文件系统

Configuration configuration = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "root");

// 2 执行删除

fs.delete(new Path("/xiyou"), true);

// 3 关闭资源

fs.close();

}

代码运行完成之后,可以回到UI界面去查看。

(二)HDFS文件详情查看

接下来,我们来学习如何查看文件的详细信息。例如:名称、权限、长度、块信息等等。

这里要用的API是fs.listFiles。

基本思路是:

  1. 获取文件系统
  2. 调用fs.listFiles获取指定目录下的文件信息
  3. 使用迭代器,循环遍历
  4. 关闭文件系统连接。

参考代码如下:

@Test

public void testListFiles() throws IOException, InterruptedException, URISyntaxException {

// 1获取文件系统

Configuration configuration = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "root");

// 2 获取文件详情

RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);

while (listFiles.hasNext()) {

LocatedFileStatus fileStatus = listFiles.next();

System.out.println("========" + fileStatus.getPath() + "=========");

System.out.println(fileStatus.getPermission());

System.out.println(fileStatus.getOwner());

System.out.println(fileStatus.getGroup());

System.out.println(fileStatus.getLen());

System.out.println(fileStatus.getModificationTime());

System.out.println(fileStatus.getReplication());

System.out.println(fileStatus.getBlockSize());

System.out.println(fileStatus.getPath().getName());

// 获取块信息

BlockLocation[] blockLocations = fileStatus.getBlockLocations();

System.out.println(Arrays.toString(blockLocations));

}

// 3 关闭资源

fs.close();

}

(二)HDFS文件和文件夹判断

接下来,我们来学习如何查看文件的详细信息。例如:名称、权限、长度、块信息等等。

这里要用的API是fs.listFiles。

基本思路是:

  1. 获取文件系统
  2. 调用fs.listFiles获取指定目录下的文件信息
  3. 使用迭代器,循环遍历
  4. 关闭文件系统连接。

参考代码如下:

@Test

public void testListStatus() throws IOException, InterruptedException, URISyntaxException{

    // 1 获取文件配置信息

    Configuration configuration = new Configuration();

    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "root");

    // 2 判断是文件还是文件夹

    FileStatus[] listStatus = fs.listStatus(new Path("/"));

    for (FileStatus fileStatus : listStatus) {

        // 如果是文件

        if (fileStatus.isFile()) {

            System.out.println("f:"+fileStatus.getPath().getName());

        }else {

            System.out.println("d:"+fileStatus.getPath().getName());

        }

    }

    // 3 关闭资源

    fs.close();

}

)HDFS文件更名和移动

文件更名和文件移动本质是一样的: 更新了这个文件的访问路径。这两个操作的的API都是rename。

具体如下:

@Test

public void testRename() throws IOException, InterruptedException, URISyntaxException{

// 1 获取文件系统

Configuration configuration = new Configuration();

FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), configuration, "root");

// 2 修改文件名称

fs.rename(new Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("/xiyou/huaguoshan/meihouwang.txt"));

// 3 关闭资源

fs.close();

}

同样的,请大家运行之后,回去ui界面去检查。

http://www.xdnf.cn/news/5809.html

相关文章:

  • 【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署
  • git进行版本控制时遇到Push cannot contain secrets的解决方法
  • Hapi.js知识框架
  • RabbitMQ,Kafka八股(自用笔记)
  • 亚马逊云科技:开启数字化转型的无限可能
  • MapReduce 入门实战:WordCount 程序
  • 2025政企行业智能体研究
  • MinIO WebUI 页面使用
  • 国产化Word处理控件Spire.Doc教程:如何使用 C# 从 Word 中提取图片
  • INTELLECT-2大模型论文速读:通过全局分散强化学习训练的推理模型
  • 小天互连即时通讯:制造行业沟通协作的高效纽带
  • 使用 百度云大模型平台 做 【提示词优化】
  • volatile是什么
  • 启动 spyder ModuleNotFoundError: No module named ‘PyQt5.QtWebKitWidgets‘
  • Spring MessageSource 详解:如何在国际化消息中传递参数
  • 2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解
  • Nature图形复现—两种快速绘制热图的方法
  • Mac显卡的工作原理及特殊之处
  • 20、map和set、unordered_map、un_ordered_set的复现
  • el-tree结合checkbox实现数据回显
  • SpringBoot的单体和分布式的任务架构
  • 【DeepSeek】判断两个 PCIe 设备是否属于**同一个 PCIe 子树
  • NPOI 操作 Word 文档
  • 如何避免和恢复因终端关闭导致的 LoRA 微调中断
  • 用 VS Code / PyCharm 编写你的第一个 Python 程序
  • Java鼠标事件监听器MouseListener、MouseMotionListener和MouseWheelListener
  • Redis——线程模型·
  • Ubuntu 18.04.6下OpenSSL与OpenSSH版本升级
  • OptiStruct的转子临界转速分析
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- GPT源代码解析