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

hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥

Java可以通过Hadoop提供的HDFS Java API来控制HDFS。通过HDFS Java API,可以实现对HDFS的文件操作,包括文件的创建、读取、写入、删除等操作。

具体来说,Java可以通过HDFS Java API来创建一个HDFS文件系统对象,然后使用该对象来进行文件的操作。例如,可以使用FileSystem类的create()方法来创建一个新的文件,使用open()方法来打开一个文件进行读取,使用write()方法来向文件中写入数据,使用delete()方法来删除一个文件等。

此外,Java还可以通过HDFS Java API来管理HDFS的元数据信息,包括文件的权限、所有者、修改时间等信息。通过FileSystem类的setPermission()、setOwner()、setTimes()等方法,可以对文件的元数据信息进行修改。

前提:
配置HADOOP_HOME环境变量

配置Path环境变量

Maven依赖成功导入

(这三个不会的评论区评论我发资料给你)

代码:

package com.huangyongsheng.hdfs;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * 客户端代码常用套路
 * 1,获取客户端对象
 * 2.执行操作
 * 3.关闭资源
 * HDFS zookeeper
 */
public class HdfsClient {
    private FileSystem fs;
    @Before
    public void init() throws URISyntaxException, IOException, InterruptedException {
        URI uri = new URI("hdfs://hadoop102:8020");
        Configuration configuration = new Configuration();
        String user="huangyongsheng";
        fs = FileSystem.get(uri, configuration, user);
    }
    @After
    public void close() throws IOException {
        fs.close();
    }
    @Test
    //创建目录
    public void testmkdir() throws URISyntaxException, IOException, InterruptedException {
        fs.mkdirs(new Path("/xiyuo/huaguoshan2"));
        System.out.println("目录创建成功");
    }
    @Test
    //上传;是否删除原数据;是否覆盖;原数据路径;目的路径
    public void testPut() throws IOException {
        fs.copyFromLocalFile(false,false,new Path("D:\\sun_wu_kong.txt"),new Path("/xiyuo/huaguoshan"));
    }
    @Test
    //下载;是否删除原数据;hdfs文件路径;win路径;是否校验(不用)
    public void  testGet() throws IOException {
//        fs.copyToLocalFile(false,new Path(""),new Path(""));
        InputStream in =fs.open(new Path("/dancijishu/wcinput/word1.txt"));
        IOUtils.copyBytes(in,System.out,4096,false);
        IOUtils.closeStream(in);
    }
    @Test
    //删除;删除文件,目录,非空目录(需要参数true)是否递归删除
    public void testRm() throws IOException {
        fs.delete(new Path(""),false);
    }
    @Test
    //文件的更名和移动
    public void testmv() throws IOException {
        fs.rename(new Path("/xiyuo/huaguoshan2"),new Path("/xiyuo/huaguoshan_namechanged"));
        // rename可以移动文件并改名      原文件路径(路径里的文件)                   一个新的路径(路径里的文件)
    }
    @Test
    //获取文件详情
    public void fileDetail() throws IOException {
        //获取所有文件信息                  迭代器
        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.getPath().getName());
        }
    }
}


http://www.kler.cn/a/137225.html

相关文章:

  • UE5喷涂功能
  • bestphp‘s revenge
  • 启用WSL后,使用ssh通道连接ubuntu
  • 武汉市电子信息与通信工程职称公示了
  • [Python学习日记-73] 面向对象实战1——答题系统
  • 进网许可认证、交换路由设备检测项目更新25年1月起
  • 活动回顾 | 数字外贸私享会【上海站】成功举办
  • redis---非关系型数据库
  • Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器
  • 如何优雅的避免空指针异常
  • SQL优化——如何写出高效率SQL
  • 如何在 ASP.NET Core 中使用 Quartz.NET
  • 哈希的应用——位图
  • 【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列
  • Unity中Shader法线贴图(下)实现篇
  • 拉链表-spark版本
  • Python等于号标红怎么办,可能原因
  • React 自定义hook 之 防抖和节流
  • 很多人都在用的现货白银突破交易法 缺点需要注意
  • Qt Widget 自定义TitleBar带阴影窗口
  • 3PC(三阶段提交)
  • redis运维(七)基础通用命令
  • Flutter笔记:使用相机
  • 数字IC前端学习笔记:时钟切换电路
  • Idea2023 Springboot web项目正常启动,页面展示404解决办法
  • 论文《A recurrent latent variable model for sequential data》笔记:详解VRNN