Java对HDFS增删改查遇到的问题

Java对HDFS增删改查遇到的问题

  • 1 (null) entry in command string: null chmod 0700的解决方法
  • 1.1 在本地配置Hadoop的环境
    在本地配置Hadoop的环境
    在这里插入图片描述
  • 1.2 在https://github.com/SweetInk/hadoop-common-2.7.1-bin下载依赖包
  • 1.3 将依赖包中的文件winutils.exe , libwinutils.lib 拷贝到%HADOOP_HOME%\bin目录。hadoop.dll 拷贝到c:\windows\system32目录中
  • 1.4 配置开发工具中的JVM参数 , -DHADOOP_USER_NAME=root 这里的root是你hadoop的用户。 配置是为了避免遇到异常org.apache.hadoop.ipc.RemoteException: Permission denied: user=Administrator
    这里以IDEA为例, 留个配置图片
    在这里插入图片描述

解决问题后分享所得, 希望能帮助遇到同样问题的小伙伴!

Java中,通过Hadoop HDFS API(Hadoop Distributed File System Application Programming Interface)可以实现对Hadoop分布式文件系统(HDFS)的操作。以下是基本的增删改查操作: 1. **创建(Create)**: - 使用`FileSystem`接口的`create()`方法创建一个新的文件或目录。例如: ```java FileSystem fs = FileSystem.get(conf); Path filePath = new Path("/path/to/new/file"); boolean created = fs.create(filePath).close(); // 返回true表示成功创建 ``` 2. **读取(Read)**: - 使用`FSDataInputStream`打开文件并读取数据: ```java FSDataInputStream in = fs.open(filePath); byte[] buffer = new byte[1024]; int bytesRead = in.read(buffer); // 读取指定字节数 ``` 3. **修改(Update)**: - 对于文件内容的修改,通常需要先关闭当前流,然后创建新的流进行更新。HDFS本身并不支持直接修改已存在的文件,但可以删除旧文件后再创建新的,这相当于覆盖写入: ```java in.close(); fs.delete(filePath, true); // 删除旧文件 OutputStream out = fs.create(filePath); out.write(buffer); // 写入新内容 out.close(); ``` 4. **删除(Delete)**: - 使用`delete()`方法删除文件或目录: ```java fs.delete(filePath, true); // 强制删除,包括子目录 ``` 5. **查询(List)**: - 可以使用`listStatus()`获取目录下的所有文件和目录信息: ```java FileStatus[] statuses = fs.listStatus(filePath); for (FileStatus status : statuses) { String fileName = status.getPath().getName(); System.out.println(fileName); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值