根据传递的值删除 hdfs 中的目录
delete directories in hdfs based on the value passed
我在 HDFS
.
中有一些如下所示的目录
/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2
/user/$USER/test/date_loaded=2020-07-09/seq=1
我正在尝试删除 date_loaded <= '2020-07-08'
的目录
我喜欢下面
hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-07
hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-08
如您所见,我曾经 hdfs
cli 语句来实现我想要的。
我想根据我传递的 date_loaded 值使用命令或脚本一次删除目录。
例如
如果我将 date_loaded
值作为 2020-07-08
传递给脚本,则应删除以下目录
/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2
我怎样才能达到我想要的
简而言之bash:
#!/bin/bash
prefix=/user/$USER/test/date_loaded=
cutoffdate=2020-07-08
declare -A to_be_removed
shopt -s nullglob
for dir in "$prefix"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/; do
[[ ${dir#"$prefix"} > $cutoffdate/ ]] && break
to_be_removed[$dir]=1
done
echo rm -rf -- "${!to_be_removed[@]}"
变量USER
必须在使用前设置。删除 echo
并将 rm
命令替换为您的命令,确保它能按预期工作。
我在 HDFS
.
/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2
/user/$USER/test/date_loaded=2020-07-09/seq=1
我正在尝试删除 date_loaded <= '2020-07-08'
的目录我喜欢下面
hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-07
hdfs dfs -rm -R user/$USER/test/date_loaded=2020-07-08
如您所见,我曾经 hdfs
cli 语句来实现我想要的。
我想根据我传递的 date_loaded 值使用命令或脚本一次删除目录。
例如
如果我将 date_loaded
值作为 2020-07-08
传递给脚本,则应删除以下目录
/user/$USER/test/date_loaded=2020-07-07/seq=1
/user/$USER/test/date_loaded=2020-07-07/seq=2
/user/$USER/test/date_loaded=2020-07-08/seq=1
/user/$USER/test/date_loaded=2020-07-08/seq=2
我怎样才能达到我想要的
简而言之bash:
#!/bin/bash
prefix=/user/$USER/test/date_loaded=
cutoffdate=2020-07-08
declare -A to_be_removed
shopt -s nullglob
for dir in "$prefix"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/; do
[[ ${dir#"$prefix"} > $cutoffdate/ ]] && break
to_be_removed[$dir]=1
done
echo rm -rf -- "${!to_be_removed[@]}"
变量USER
必须在使用前设置。删除 echo
并将 rm
命令替换为您的命令,确保它能按预期工作。