連結したいログファイルを含む S3 バケットがあり、EMR ジョブへの入力として使用します。ログ ファイルは次のようなパスにありますbucket-name/[date]/product/out/[hour]/[minute-based-file]
。すべての日付ディレクトリのすべての時間ディレクトリにあるすべての分のログを取得し、それらを 1 つのファイルに連結したいと思います。そのファイルを EMR ジョブへの入力として使用したいと考えています。元のログ ファイルは保存する必要があり、新しく結合されたログ ファイルはおそらく別の S3 バケットに書き込まれます。
hadoop fs -getmerge
SSH 経由で EMR マスター ノードで使用しようとしましたが、次のエラーが発生しました。
This file system object (file:///) does not support access to the request path 's3://target-bucket-name/merged.log'
ソース S3 バケットには他のファイルがいくつか含まれているため、そのすべてのファイルを含めたくありません。ワイルドカード マッチは次のようになりますs3n://bucket-name/*/product/out/*/log.*
。
目的は、EMR への数万または数十万の小さな (10k-3mb) 入力ファイルの問題を回避し、代わりに、より効率的に分割できる 1 つの大きなファイルを与えることです。