java-hdfs-api-文件上传

134 阅读1分钟

1. 添加依赖

首先,确保你的项目中引入了Hadoop的依赖。如果你使用的是Maven项目,可以在pom.xml中添加以下依赖:

xml

复制

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.3.4</version> <!-- 根据你的Hadoop版本调整 -->
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>3.3.4</version> <!-- 根据你的Hadoop版本调整 -->
</dependency>

2. 编写代码

以下是一个完整的Java代码示例,展示如何将本地文件上传到HDFS:

java

复制

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

import java.io.IOException;

public class HdfsFileUploader {
    public static void main(String[] args) {
        // 配置HDFS的地址
        String hdfsUri = "hdfs://your-hadoop-namenode:8020"; // 替换为你的HDFS NameNode地址
        String localFilePath = "/path/to/local/file.txt"; // 替换为本地文件路径
        String hdfsFilePath = "/path/on/hdfs/file.txt"; // 替换为HDFS目标路径

        // 创建HDFS配置
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", hdfsUri);

        try {
            // 获取HDFS文件系统实例
            FileSystem fs = FileSystem.get(conf);

            // 创建本地文件路径和HDFS目标路径
            Path localPath = new Path(localFilePath);
            Path hdfsPath = new Path(hdfsFilePath);

            // 检查目标路径是否存在,如果存在则删除
            if (fs.exists(hdfsPath)) {
                fs.delete(hdfsPath, false);
            }

            // 将本地文件上传到HDFS
            fs.copyFromLocalFile(localPath, hdfsPath);
            System.out.println("文件上传成功!");

            // 关闭文件系统
            fs.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件上传失败!");
        }
    }
}

3. 代码说明

  • Configuration:用于配置HDFS的连接信息,如NameNode的地址。
  • FileSystem:表示HDFS文件系统,通过它可以操作HDFS中的文件和目录。
  • copyFromLocalFile:将本地文件上传到HDFS。
  • existsdelete:用于检查目标路径是否存在,如果存在则删除,避免冲突。

4. 运行代码

  • 确保你的Hadoop集群正在运行,并且NameNode和DataNode服务正常。
  • 替换代码中的hdfsUrilocalFilePathhdfsFilePath为实际的值。
  • 编译并运行代码,如果一切正常,文件将被上传到指定的HDFS路径。

注意事项

  • 确保Hadoop集群的配置文件(如core-site.xmlhdfs-site.xml)在你的项目中可用,或者通过Configuration手动设置相关参数。