2016-11-21 4 views
4

hadfs에서 제로 바이트 인 파일을 삭제하기 위해 hadoop 2.x에서 명령을 찾고 있습니다. 어느 누구라도 적절한 명령을 알려주십시오. hdfs에서 0 바이트의 파일을 찾아 디렉토리에서 삭제하려고합니다. 단계별로제로 바이트 인 파일을 삭제합니다.

답변

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의 대답에 따라 파일을 삭제해야하는 경우 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이 설명한 것을 확장하기 위해 'd'(디렉토리)로 시작하지 않고 5 번째 필드 (크기)가 0이 아닌'ls '의 행에 대해 필드 8 (파일 이름)을 인쇄하고 있습니다. – highlycaffeinated