21xrx.com
2025-04-02 21:50:43 Wednesday
文章检索 我的文章 写文章
我最近进行了一次 HDFS Java API 下载文件到本地的实验
2023-06-11 01:20:29 深夜i     16     0
HDFS Java

我最近进行了一次 HDFS Java API 下载文件到本地的实验,取得了不错的成果。在此分享一下我的研究成果,希望对大家有所帮助。

API、文件下载

首先,我创建了一个 Java 项目,并在 pom.xml 中添加了以下依赖项:

xml

  
  org.apache.hadoop
 
  
  hadoop-hdfs
 
  
  3.3.0
 

  
  org.apache.hadoop
 
  
  hadoop-common
 
  
  3.3.0

然后,我编写了以下 Java 代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class DownloadFile {
  private static final String HDFS_URI = "hdfs://localhost:9000";
  private static final String FILE_PATH = "/user/hadoop/example/file.txt";
  private static final String DOWNLOAD_PATH = "/tmp/file.txt";
  public static void main(String[] args) throws IOException {
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(URI.create(HDFS_URI), conf);
    InputStream in = fs.open(new Path(FILE_PATH));
    FileOutputStream out = new FileOutputStream(DOWNLOAD_PATH);
    byte[] buffer = new byte[1024];
    int length;
    while ((length = in.read(buffer)) > 0) {
      out.write(buffer, 0, length);
    }
    in.close();
    out.close();
    fs.close();
    System.out.println("File downloaded successfully.");
  }
}

代码中,我首先定义了 HDFS 的 URI、待下载的 HDFS 文件路径、以及下载后保存到本地的路径。接着,我创建了一个 HDFS 的文件系统实例,并打开待下载的文件。然后,我创建了一个本地文件输出流,并使用一个缓冲区从输入流中读写数据,同时关闭输入流、输出流以及文件系统实例,最后输出下载成功的信息。

这是我进行 HDFS Java API 下载文件到本地的实验报告,我认为这对于学习 HDFS 以及 Java API 的应用有所帮助。

  
  

评论区