hadoop删除文件是零字节

时间:2016-11-21 17:20:06

标签: hdfs zero

我正在寻找hadoop 2.x中的命令来删除hdfs中的零字节文件。 可以任何人请让我知道适当的命令。 我试图在hdfs中找到具有零字节的文件并从目录中删除它们。

3 个答案:

答案 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