首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實作 HDFS 檔案上傳、下載與刪除操作範例

     編輯:Java 相關知識

Java 實作 HDFS 檔案上傳、下載與刪除操作範例

Apache Hadoop 的 HDFS (Hadoop Distributed File System) 是大數據生態系中核心的分散式檔案系統。本文提供一個完整的 Java 類別 HadoopFile,封裝了上傳本地檔案到 HDFS、從 HDFS 下載檔案、以及刪除 HDFS 上檔案的常用操作。

環境依賴

  • Hadoop Common / HDFS Client 相關 JAR 包
  • 已設定 core-site.xml 指向 NameNode

核心程式碼結構

public class HadoopFile {
    private Configuration conf = null;

    public HadoopFile() {
        conf = new Configuration();
        conf.addResource(new Path("/hadoop/etc/hadoop/core-site.xml"));
    }

    public HadoopFile(Configuration conf) {
        this.conf = conf;
    }

    // 上傳檔案
    public boolean sendFile(String hdfsPath, String localFile) { ... }

    // 刪除檔案
    public boolean delFile(String hdfsFile) { ... }

    // 下載檔案
    public boolean downloadFile(String hdfsFile, String localPath) { ... }
}

關鍵方法解析

1. 上傳檔案 (sendFile)

  • 檢查本地檔案是否存在。
  • 取得本地檔案系統 (FileSystem.getLocal(conf)) 與 HDFS 檔案系統 (FileSystem.get(conf))。
  • 使用 FSDataInputStream 讀取本地檔案,FSDataOutputStream 寫入 HDFS 目標路徑。
  • 以 1KB 緩衝區分塊複製資料。
  • 完成後列出目標目錄檔案狀態確認。

2. 刪除檔案 (delFile)

  • 取得 HDFS 檔案系統實例。
  • 呼叫 hadoopFS.delete(hadPath, true) 遞歸刪除。
  • 刪除後列出父目錄檔案狀態。

3. 下載檔案 (downloadFile)

  • 從 HDFS 開啟輸入流 (hadoopFS.open(hadPath))。
  • 在本地建立輸出流 (localFS.create(...))。
  • 同樣以緩衝區複製資料流。

使用範例

Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode:9000");
HadoopFile hf = new HadoopFile(conf);

// 上傳
hf.sendFile("/user/data", "/local/path/test.txt");

// 下載
hf.downloadFile("/user/data/test.txt", "/local/download");

// 刪除
hf.delFile("/user/data/test.txt");

最佳實踐提醒

  • 生產環境建議使用 try-with-resources 自動關閉流。
  • 大檔案傳輸可考慮調整緩衝區大小或啟用壓縮。
  • 異常處理應記錄日誌而非僅 printStackTrace()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved