복붙노트

[HADOOP] N 일보다 오래된 hdfs의 파티션 폴더 삭제

HADOOP

N 일보다 오래된 hdfs의 파티션 폴더 삭제

N 일이 넘은 파티션 폴더를 삭제하고 싶습니다.

아래의 명령은 정확하게 50 일 전의 폴더를 제공합니다. 50 일 미만의 모든 폴더 목록을 원합니다.

hadoop fs -ls /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof/chgdt=`date --date '50 days ago' +\%Y-\%m-\%d`

해결법

  1. ==============================

    1.당신은 solr hdfsfindtool을 시도 할 수 있습니다 :

    당신은 solr hdfsfindtool을 시도 할 수 있습니다 :

    hadoop jar /opt/cloudera/parcels/CDH/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.HdfsFindTool -find /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof -mtime +50 | xargs hdfs dfs -rm -r -skipTrash
    
  2. ==============================

    2.bash 스크립트로 수행 할 수 있습니다.

    bash 스크립트로 수행 할 수 있습니다.

    today=`date +'%s'`
    hdfs dfs -ls /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof/ | grep "^d" | while read line ; do 
    dir_date=$(echo ${line} | awk '{print $6}')
    difference=$(( ( ${today} - $(date -d ${dir_date} +%s) ) / ( 24*60*60 ) ))
    filePath=$(echo ${line} | awk '{print $8}')
    
    if [ ${difference} -lt 50 ]; then
        echo "${filepath}"
    fi
    done
    
  3. from https://stackoverflow.com/questions/43889792/delete-partitions-folders-in-hdfs-older-than-n-days by cc-by-sa and MIT license