Apache Hadoop 的 HDFS (Hadoop Distributed File System) 是大數據生態系中核心的分散式檔案系統。本文提供一個完整的 Java 類別 HadoopFile,封裝了上傳本地檔案到 HDFS、從 HDFS 下載檔案、以及刪除 HDFS 上檔案的常用操作。
core-site.xml 指向 NameNodepublic 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) { ... }
}
FileSystem.getLocal(conf)) 與 HDFS 檔案系統 (FileSystem.get(conf))。FSDataInputStream 讀取本地檔案,FSDataOutputStream 寫入 HDFS 目標路徑。hadoopFS.delete(hadPath, true) 遞歸刪除。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()。