удалить папки разделов в hdfs старше N дней

Я хочу удалить папки раздела старше N дней.

Приведенная ниже команда дает папки, которые были ровно 50 дней назад. Мне нужен список всех папок, которым меньше 50 дней

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

person Thiyagaraj Narayanan    schedule 10.05.2017    source источник


Ответы (2)


Вы можете попробовать с помощью 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
person jedijs    schedule 10.05.2017

Это можно сделать с помощью скрипта 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
person philantrovert    schedule 11.05.2017