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

Hadoop HDFS 檔案操作完整指南:上傳、下載與刪除

     編輯:Java 相關知識

Hadoop HDFS 檔案操作完整指南:上傳、下載與刪除

針對 Hadoop 分散式檔案系統 (HDFS) 的常見檔案操作,本文提供一個封裝良好的 Java 工具類 HadoopFile,涵蓋從本地上傳至 HDFS、從 HDFS 下載到本地、以及刪除 HDFS 檔案三大核心功能,適合快速整合至大數據應用專案中。

類別設計概覽

HadoopFile 類別接受 Configuration 物件初始化,預設載入 core-site.xml。三個主要公共方法分別對應上傳、刪除、下載,皆回傳 boolean 表示成敗。

上傳檔案流程詳解

  1. 驗證本地來源檔案存在且為檔案非目錄。
  2. 取得 LocalFileSystem 與 DistributedFileSystem 實例。
  3. 建立 HDFS 目標路徑 Path,使用 FSDataOutputStream 寫入。
  4. 以 1024 位元組緩衝區循環讀寫,確保記憶體效率。
  5. 關閉流並列出目標目錄驗證結果。

刪除與下載要點

  • 刪除:呼叫 FileSystem.delete(Path, true) 遞歸刪除,支援目錄與檔案。
  • 下載:反向操作,從 HDFS 讀取 FSDataInputStream,寫入本地 FSDataOutputStream。

程式碼片段:上傳核心邏輯

try {
    FileSystem localFS = FileSystem.getLocal(conf);
    FileSystem hadoopFS = FileSystem.get(conf);
    Path hadPath = new Path(hdfsPath);
    FSDataOutputStream fsOut = hadoopFS.create(new Path(hdfsPath + "/" + file.getName()));
    FSDataInputStream fsIn = localFS.open(new Path(localFile));
    byte[] buf = new byte[1024];
    int readBytes;
    while ((readBytes = fsIn.read(buf)) > 0) {
        fsOut.write(buf, 0, readBytes);
    }
    fsIn.close();
    fsOut.close();
    // 列出目錄確認
    FileStatus[] files = hadoopFS.listStatus(hadPath);
    for (FileStatus fs : files) System.out.println(fs);
    return true;
} catch (IOException e) {
    e.printStackTrace();
    return false;
}

整合建議

  • 將 Configuration 交由 Spring 或依賴注入框架管理。
  • 補充重試機制應對網路抖動。
  • 針對 Kerberos 安全叢集,需額外處理認證 (UGI)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved