Java API操作HDFS方法详细讲解

2023-05-16 0 2,675

目录

一、判断Path指向目录还是文件

net.xxr.hdfs包里创建PathToFileOrDir

Java API操作HDFS方法详细讲解

package net.xxr.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.net.URI;
/**
 * 功能:判断路径指向目录还是文件
 */
public class PathToFileOrDir {
    public static void main(String[] args) throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置数据节点主机名属性
        conf.set(\"dfs.client.use.datanode.hostname\", \"true\");
        // 定义uri字符串
        String uri = \"hdfs://master:9000\";
        // 创建文件系统对象
        FileSystem fs = FileSystem.get(new URI(uri), conf, \"root\");
        // 创建路径对象,指向目录
        Path path1 = new Path(\"/ied01\");
        if (fs.isDirectory(path1)) {
            System.out.println(\"[\" + path1 + \"]指向的是目录!\");
        } else {
            System.out.println(\"[\" + path1 + \"]指向的是文件!\");
        }
        // 创建路径对象,指向文件
        Path path2 = new Path(\"/lzy01/test2.txt\");
        if (fs.isFile(path2)) {
            System.out.println(\"[\" + path2 + \"]指向的是文件!\");
        } else {
            System.out.println(\"[\" + path2 + \"]指向的是目录!\");
        }
    }
}

结果

Java API操作HDFS方法详细讲解

二、删除目录或文件

net.xxr.hdfs包里创建DeleteFileOrDir

Java API操作HDFS方法详细讲解

1、删除文件

  • 删除/lzy/hello.txt文件
  • 编写deleteFile()方法
package net.xxr.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import java.net.URI;
/**
 * 功能:删除目录或文件
 */
public class DeleteFileOrDir {
    @Test
    public void deleteFile() throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置数据节点主机名属性
        conf.set(\"dfs.client.use.datanode.hostname\", \"true\");
        // 定义uri字符串
        String uri = \"hdfs://master:9000\";
        // 创建文件系统对象
        FileSystem fs = FileSystem.get(new URI(uri), conf, \"root\");
        // 创建路径对象(指向文件)
        Path path = new Path(uri + \"/lzy01/hello.txt\");
        // 删除路径对象指向的文件(第二个参数表明是否递归,删除文件,不用递归)
        boolean result = fs.delete(path, false);
        // 根据返回结果提示用户
        if (result) {
            System.out.println(\"文件[\" + path + \"]删除成功!\");
        } else {
            System.out.println(\"文件[\" + path + \"]删除失败!\");
        }
    }
}

结果

Java API操作HDFS方法详细讲解

利用Hadoop WebUI界面查看

Java API操作HDFS方法详细讲解

再运行deleteFile()测试方法,查看结果

Java API操作HDFS方法详细讲解

可以在删除文件之前,判断文件是否存在,需要修改代码

package net.xxr.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import java.net.URI;
/**
 * 功能:删除目录或文件
 */
public class DeleteFileOrDir {
    @Test
    public void deleteFile() throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置数据节点主机名属性
        conf.set(\"dfs.client.use.datanode.hostname\", \"true\");
        // 定义uri字符串
        String uri = \"hdfs://master:9000\";
        // 创建文件系统对象
        FileSystem fs = FileSystem.get(new URI(uri), conf, \"root\");
        // 创建路径对象(指向文件)
        Path path = new Path(uri + \"/lzy01/hi.txt\");
        // 判断路径对象指向的文件是否存在
        if (fs.exists(path)) {
            // 删除路径对象指向的文件(第二个参数表明是否递归,删除文件,不用递归)
            boolean result = fs.delete(path, false);
            // 根据返回结果提示用户
            if (result) {
                System.out.println(\"文件[\" + path + \"]删除成功!\");
            } else {
                System.out.println(\"文件[\" + path + \"]删除失败!\");
            }
        } else {
            System.out.println(\"文件[\" + path + \"]不存在!\");
        }
    }
}

结果

Java API操作HDFS方法详细讲解

2、删除目录

  • 删除/ied01目录
  • 编写deleteDir()方法
@Test
    public void deleteDir() throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置数据节点主机名属性
        conf.set(\"dfs.client.use.datanode.hostname\", \"true\");
        // 定义uri字符串
        String uri = \"hdfs://master:9000\";
        // 创建文件系统对象
        FileSystem fs = FileSystem.get(new URI(uri), conf, \"root\");
        // 创建路径对象(指向目录)
        Path path = new Path(uri + \"/ied01\");
        // 判断路径对象指向的目录否存在
        if (fs.exists(path)) {
            // 删除路径对象指向的目录(第二个参数表明是否递归,删除文件,要递归)
            boolean result = fs.delete(path, true);
            // 根据返回结果提示用户
            if (result) {
                System.out.println(\"目录[\" + path + \"]删除成功!\");
            } else {
                System.out.println(\"目录[\" + path + \"]删除失败!\");
            }
        } else {
            System.out.println(\"目录[\" + path + \"]不存在!\");
        }
    }

Java API操作HDFS方法详细讲解

再运行deleteDir()方法,查看结果

Java API操作HDFS方法详细讲解

3、删除目录或文件

  • 进行三个层面的判断:判断类型(目录或文件)、判断是否存在、判断删除是否成功
  • 删除/ied03/exam.txt文件和/ied02目录
  • 编写delete()方法
@Test
    public void delete() throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置数据节点主机名属性
        conf.set(\"dfs.client.use.datanode.hostname\", \"true\");
        // 定义uri字符串
        String uri = \"hdfs://master:9000\";
        // 创建文件系统对象
        FileSystem fs = FileSystem.get(new URI(uri), conf, \"root\");
        // 定义随机对象
        Random random = new Random();
        // 产生随机整数 - [0, 1]
        int choice = random.nextInt(100) % 2;
        // 定义路径字符串
        String[] strPath = {\"/ied03/exam.txt\", \"/ied02\"};
        // 创建路径对象(指向目录或文件)
        Path path = new Path(uri + strPath[choice]);
        // 判断类型:目录或文件
        String type = \"\";
        if (fs.isDirectory(path)) {
            type = \"目录\";
        } else {
            type = \"文件\";
        }
        // 判断存在性
        if (fs.exists(path)) {
            // 删除路径对象指向的目录或文件
            boolean result = fs.delete(path, true);
            // 判断删除是否成功
            if (result) {
                System.out.println(type + \"[\" + path + \"]删除成功!\");
            } else {
                System.out.println(type + \"[\" + path + \"]删除失败!\");
            }
        } else {
            System.out.println(type + \"[\" + path + \"]不存在!\");
        }
    }
资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 Java API操作HDFS方法详细讲解 http://www.20zxx.cn/705519/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务