如何通过java程序访问hdfs

目录

配置依赖:

编写java代码:

1. uploadToHDFS

2. downloadFromHDFS

3. createHDFSDirectory

4. deleteFromHDFS

5.getHDFSFileMetadata

6. listHDFSFiles


配置依赖:

使用 Maven 进行项目管理,在 pom.xml 文件中添加以下依赖:

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.1</version>
        </dependency>

编写java代码:

提供了基本的 HDFS 文件系统操作功能,涵盖了文件上传、下载、目录创建、删除、获取元数据以及列出文件和目录的功能。通过这些方法,可以在 Java 程序中方便地操作和管理 HDFS 中的数据和文件系统。

主类,调用各个方法

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 设置HDFS的URI
        conf.set("fs.defaultFS", "hdfs://localhost:8020"); //在本地启动的Hadoop
        // 创建FileSystem对象
        FileSystem fs = FileSystem.get(conf);

        // 从HDFS中删除文件或目录
        //HDFSOperations.deleteFromHDFS(fs,"/test2",false);
        // 在HDFS中创建目录
        //HDFSOperations.createHDFSDirectory(fs,"/test2");
        // 获取HDFS文件或目录的元数据
        //HDFSOperations.getHDFSFileMetadata(fs,"/");
        // 列出HDFS目录中的文件和子目录
        //HDFSOperations.listHDFSFiles(fs,"/test2");
        // 从HDFS下载文件到本地
        //HDFSOperations.downloadFromHDFS(fs,"/test2","Desktop/test2");
        // 上传本地文件到HDFS
        //HDFSOperations.uploadToHDFS(fs,"Desktop/Book1.csv","/test2");
        // 获取HDFS根目录
        Path root = new Path("/");
        FileStatus[] status = fs.listStatus(root);

        // 输出根目录下的文件和目录
        for (FileStatus file : status) {
            System.out.println(file.getPath().toString());
        }

        // 关闭FileSystem对象
        fs.close();
    }
}

操作类,编写各操作方法

import org.apache.hadoop.fs.*;
import java.io.IOException;

public class HDFSOperations {



    // 上传本地文件到HDFS
    public static void uploadToHDFS(FileSystem fs,String srcPath, String destPath) throws IOException {
        fs.copyFromLocalFile(new Path(srcPath), new Path(destPath));
    }

    // 从HDFS下载文件到本地
    public static void downloadFromHDFS(FileSystem fs,String srcPath, String destPath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达芬奇要当程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值