我正在寻找hadoop 2.x中的命令来删除hdfs中的零字节文件。 可以任何人请让我知道适当的命令。 我试图在hdfs中找到具有零字节的文件并从目录中删除它们。
答案 0 :(得分:11)
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
- 迭代删除
答案 1 :(得分:4)
根据Kombajn的回答,如果您要删除大量文件,使用xargs
会更快。这将允许您按hdfs
命令删除多个文件,这相当昂贵。
hdfs dfs -ls -R / | awk '$1 !~ /^d/ && $5 == "0" { print $8 }' | xargs -n100 hdfs dfs -rm
答案 2 :(得分:0)
for f in $(hdfs dfs -ls -R hdfs:///user/kthakur/test | awk '$1 !~ /^d/ && $5 == "0" { print $8 }'); do hdfs dfs -rm "$f"; done