2016-11-21 40 views
4

我正在尋找hadoop 2.x中的命令來刪除hdfs中零字節的文件。 任何人都可以讓我知道適當的命令。 我正在嘗試在hdfs中查找零字節的文件,並將它們從目錄中刪除。hadoop刪除零文件的文件

回答

4
for f in $(hdfs dfs -ls -R/| awk '$1 !~ /^d/ && $5 == "0" { print $8 }'); do hdfs dfs -rm "$f"; done 

循序漸進:

hdfs dfs -ls -R / - 列出HDFS中的所有文件遞歸

awk '$1 !~ /^d/ && $5 == "0" { print $8 }') - 打印是不是目錄,並用大小爲0

for f in $(...); do hdfs dfs -rm "$f"; done那些完整路徑 - 反覆刪除

2

建立在Kombajn的答案,如果你有很多文件刪除它將是qui cker使用xargs。這將允許您刪除多個文件,每個hdfs命令,這是相當昂貴的。

hdfs dfs -ls -R/| awk '$1 !~ /^d/ && $5 == "0" { print $8 }' | xargs -n100 hdfs dfs -rm 
+0

你介意解釋這裏使用的awk腳本嗎? – ylabidi

+1

@ylabidi展開Kombajn描述的內容,他打印來自'ls'的行不是以'd'(目錄)開頭,並且第5個字段(大小)不爲0的行的字段8(文件名) – highlycaffeinated