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. PCF Devのインストール場所を変更してください
- 4. Firebase:サービスワーカーの場所を変更してください
- 5. /etc/fstabの場所を変更してください
- 6. Node.jsのファイル所有者を変更してください
- 7. CTestTestfile.cmakeの宛先を指定してください
- 8. Powershellのファイル名を変更してファイル名を指定してください。
- 9. JMSリスナー - 動的に宛先を選択してください
- 10. DocumentDirectoryのファイル名を変更してください
- 11. swiftパッケージファイルのファイル名を変更してください
- 12. ファイル名をPHPのuniqidに変更してください。
- 13. graleのapkファイル名を変更してください
- 14. Pythonのすべての場所で変数名を変更してください
- 15. PHP move_uploaded_fileファイル名を変更してください
- 16. Windows 10のAndroid NDKの場所を変更してください
- 17. 宛先の変更ip
- 18. Gulp:CSSファイルのファイルの宛先を変更する
- 19. ループ内の変数名を変更してください
- 20. Pythonスクリプトを使用してファイル名を変更してください
- 21. Bash forループ - 変数名を変更してください
- 22. robocopy/MIR - 宛先のdesktop.iniを削除しないでください
- 23. ドミノデザイナーのWebサービスコンシューマーのパッケージ名を変更してください
- 24. モデルのテーブル名のランタイムを変更してください
- 25. モードラインのバッファ名の色を変更してください
- 26. 一歩でベース名を変更して変更してください
- 27. " - "で始まるファイルの名前を変更してください
- 28. ファイルの名前をmd5 sum + extension(BASH)に変更してください。
- 29. WooThemesプロジェクトプラグイン - 表示されているコスチュームフィールドの場所を変更してください
- 30. .apkのパッケージ名を変更してください