0

distcp がワイルドカードを使用できないことは承知しています。ただし、ディレクトリの変更時にスケジュールされたdistcpが必要になります。(つまり、月曜日の「金曜日」ディレクトリ内のデータのみをコピーするなど) だけでなく、指定されたディレクトリの下のすべてのプロジェクトからもコピーします。

この種のスクリプトを作成するための何らかのデザイン パターンはありますか?

要するに、私はできるようになりたいです:

hadoop distcp /foo/*/bar/$year/$month/$day hdfs://namespace-foo/replication-dir/
4

1 に答える 1

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

}
于 2016-01-28T12:53:47.147 に答える