hdfsのフォルダにいくつかのファイルがあり、その名前はhdfsのfilename.yyyy-mm-dd-hh.machinename.gzの形式です。私はこれらをs3に転送する必要がありますが、それらをyyyy/mm/dd/hh/filename.yyyy-mm-dd-hh.machinename.gz(s3はフラットな構造を持つのでオブジェクト名になります)に配置したい私が指定したバケット。 distcpコマンドは、hdfsからs3にファイルを転送できますが、上記を行うオプションはありますか?これを実行するためにdistcpをどのように拡張できますか?distcpの宛先ファイル名/場所を変更してください
0
A
答えて
1
注:これは解決策ではなく、単なるヒントです。
正確な答えがわかりませんし、実際に試してみるためにS3インスタンスを持っていません。しかし、ここでAWKのファイル名の事前処理と特定のディレクトリ構造内のファイルのコピー方法があります。
初期ディレクトリの内容:特定のディレクトリ構造内のファイルをコピーするための
[email protected]:~/path/to/input$ find
./filename.yyyy-mm-dd-hh.machinename.gz
./filename.2016-12-10-08.machinename.gz
./filename.2015-12-10-08.machinename.gz
./filename.2015-10-10-08.machinename.gz
./filename.2015-10-11-08.machinename.gz
コマンド:コマンド実行後
[email protected]:~/path/to/input$ ls | awk -F"." '{print $1" "$2" "$3" "$4}' | awk -F"-" '{print $1" "$2" "$3" "$4" "$5" "$6" "$7}' | awk -F" " '{PATH=$2"/"$3"/"$4"/"$5; FNAME=$1"."$2"-"$3"-"$4"-"$5"."$6"."$7; system("mkdir -p "PATH); system("cp "FNAME" "PATH); }'
最終的なディレクトリの内容:以下のコマンドは、ローカルのLinuxファイルシステムを検討書かれています
./filename.yyyy-mm-dd-hh.machinename.gz
./yyyy
./yyyy/mm
./yyyy/mm/dd
./yyyy/mm/dd/hh
./yyyy/mm/dd/hh/filename.yyyy-mm-dd-hh.machinename.gz
./filename.2016-12-10-08.machinename.gz
./2016
./2016/12
./2016/12/10
./2016/12/10/08
./2016/12/10/08/filename.2016-12-10-08.machinename.gz
./filename.2015-12-10-08.machinename.gz
./2015
./2015/12
./2015/12/10
./2015/12/10/08
./2015/12/10/08/filename.2015-12-10-08.machinename.gz
./filename.2015-10-11-08.machinename.gz
./2015/10
./2015/10/11
./2015/10/11/08
./2015/10/11/08/filename.2015-10-11-08.machinename.gz
./filename.2015-10-10-08.machinename.gz
./2015/10/10
./2015/10/10/08
./2015/10/10/08/filename.2015-10-10-08.machinename.gz
0
あなたはちょうどmentioする必要がありますn目的の形式で目的のパスを指定します。
hadoop distcp filename.yyyy-mm-dd-hh.machinename.gz s3n://<bucket-name>/yyyy/mm/dd/hh/filename.yyyy-mm-dd-hh.machinename.gz
関連する問題
- 1. 宛先が変更されたdivの場所を変更する
- 2. EclipseのSVNリポジトリの場所を変更してください
- 3. JMSリスナー - 動的に宛先を選択してください
- 4. ファイル名をPHPのuniqidに変更してください。
- 5. DocumentDirectoryのファイル名を変更してください
- 6. ループ内の変数名を変更してください
- 7. Bash forループ - 変数名を変更してください
- 8. モードラインのバッファ名の色を変更してください
- 9. robocopy/MIR - 宛先のdesktop.iniを削除しないでください
- 10. 出力dllの名前を変更してください
- 11. クラス本体のメソッド名を変更してください
- 12. .apkのパッケージ名を変更してください
- 13. レルムテーブルの名前を変更してください
- 14. ファイルの名前をmd5 sum + extension(BASH)に変更してください。
- 15. Access 2003、ファイルをインポートするコードを実行し、テキストに変換してファイルに名前を変更してファイル名を変更してください
- 16. でファイルを検索しますか?ファイル名を入れて名前を変更してください
- 17. .xapファイルのバージョンに変更がある場合は、ダウンロードしてください。
- 18. lcovに私の.cppファイルと.hファイルの場所を教えてください。
- 19. ブランチ名をgitに変更してください
- 20. ディレクトリ名を変更してください
- 21. PHP名前を変更してください!
- 22. UBBユーザ名を変更してください。
- 23. CVS:祖先は兄弟なしのファイルを更新してください。
- 24. リソース名を変更せずにURLを変更してください
- 25. .cssファイルの出力ディレクトリを変更してください
- 26. SystemParametersを変更してください
- 27. ユーザエージェントを変更してください
- 28. c/C++でのAndroidのネイティブスレッドの優先度を変更してください
- 29. C:\ Folder \ FileをC:\\ Folder \\ファイルに変更してください
- 30. WiX:アンインストール時にファイル名を変更しないでください