2016-11-21 10 views
4

私はhadoop 2.xでhdfsのゼロバイトのファイルを削除するコマンドを探しています。 いずれか私は適切なコマンドを教えてください。 私はhdfsで0バイトのファイルを見つけようとしていて、それらをディレクトリから削除しようとしています。ステップバイ0バイトの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 / - ないディレクトリやサイズを0

for f in $(...); do hdfs dfs -rm "$f"; doneであるそれらのフルパスを印刷する - - 再帰的

awk '$1 !~ /^d/ && $5 == "0" { print $8 }')は、HDFS内のすべてのファイルを一覧表示し、反復

を削除
2

Kombajnの回答に基づいて、たくさんのファイルを削除するとクイーンになる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が述べたものを展開するために、 'd'(ディレクトリ)で始まらず、5番目のフィールド(size)が0でない 'ls 'の行のフィールド8(filename)を表示しています – highlycaffeinated

関連する問題