3
hadoop shell的命令爲hadoop fs -rm /dir/*
。但是我從API找不到類似的東西。是否可以使用hadoop文件系統API從hdfs一次刪除多個文件?
hadoop shell的命令爲hadoop fs -rm /dir/*
。但是我從API找不到類似的東西。是否可以使用hadoop文件系統API從hdfs一次刪除多個文件?
要刪除一個目錄中的文件,而不刪除目錄本身或刪除文件從任何子目錄(即沒有什麼hadoop fs -rm /dir/*
),可以使用:
FileSystem fs = dir.getFileSystem(getConf());
RemoteIterator<LocatedFileStatus> it = fs.listFiles(dir, false);
while (it.hasNext()) {
fs.delete(it.next().getPath(), false);
}
迭代會導致轉的號碼的電話吧?是不是要對內存徵稅? – volcano
它在事物的宏偉計劃中是微不足道的 - 它實際上是由於該通配符,「hadoop fs -rm/dir/*」所做的事情。不要過早地陷入優化,這根本不算稅。 – Quetzalcoatl
嗯,是的謝謝!順便說一句,執行來自java的hadoop shell命令會是一個糟糕的選擇嗎?會不會服務器優化的目的? – volcano