在HDFS中查找超过N天的目录

vid*_*d12 10 hadoop hdfs

可以使用hadoop fs -ls查找超过N天(从当前日期开始)的所有目录吗?

我正在尝试编写一个清理例程来查找和删除HDFS上的所有目录(匹配模式),这些目录是在当前日期之前N天创建的.

Lor*_*dig 17

此脚本列出了早于[days]以下的所有目录:

#!/bin/bash
usage="Usage: $0 [days]"

if [ ! "$1" ]
then
  echo $usage
  exit 1
fi

now=$(date +%s)
hadoop fs -lsr | grep "^d" | while read f; do 
  dir_date=`echo $f | awk '{print $6}'`
  difference=$(( ( $now - $(date -d "$dir_date" +%s) ) / (24 * 60 * 60 ) ))
  if [ $difference -gt $1 ]; then
    echo $f;
  fi
done
Run Code Online (Sandbox Code Playgroud)


Jak*_*kul 7

如果您碰巧使用CDHHadoop的发行版,它会附带一个非常有用的HdfsFindTool命令,其行为类似于Linux的find命令.

如果您使用的是默认宗地信息,请按以下步骤操作:

hadoop jar /opt/cloudera/parcels/CDH/jars/search-mr-*-job.jar \
org.apache.solr.hadoop.HdfsFindTool -find PATH -mtime +N
Run Code Online (Sandbox Code Playgroud)

在哪里用搜索路径替换PATH,用天数替换N.