我知道distcp无法使用通配符。 但是,我需要更改目录的预定distcp。 (即只复制星期一“星期五”目录中的数据等),也可以复制指定目录下的所有项目。
是否有某种设计模式可用于编写此类脚本?
简而言之,我希望能够做到:
hadoop distcp /foo/*/bar/$year/$month/$day hdfs://namespace-foo/replication-dir/
答案 0 :(得分:0)
我最终使用以下函数来访问我需要的目录。
function get_list_of_directories_for_input_dir {
local fvar_dirlist=`hadoop fs -ls "$1" | awk '{print $8}'`
local fvar_count=`echo "$fvar_dirlist" | wc -l`
if [ "$fvar_count" -ge "2" ]; then
local fvar_len=$(($fvar_count - 1))
local fvar_dirlist=`echo $fvar_dirlist | tail -n $fvar_len`
echo "$fvar_dirlist"
else
exit 1;
fi
}