約 300 GB のログ ファイルを順不同で含む s3 バケットがあります。
特定の日に関連するログ行が同じ s3 'フォルダ' にまとめられるように、日時スタンプを使用して hadoop-hive で使用するためにこのデータを分割したいと考えています。たとえば、1 月 1 日のログ エントリは、次の名前に一致するファイルに含まれます。
s3://bucket1/partitions/created_date=2010-01-01/file1
s3://bucket1/partitions/created_date=2010-01-01/file2
s3://bucket1/partitions/created_date=2010-01-01/file3
等
データを変換するための最良の方法は何ですか? 一度に各ファイルを読み取り、適切な s3 の場所にデータを出力する単一のスクリプトを実行するのが最善でしょうか?
Hadoop を使用してこれを行う良い方法があると確信しています。誰か教えてもらえますか?
私が試したこと:
各日付のすべてのログエントリを収集し、それらを直接 S3 に書き込み、リデューサーには何も返さないマッパーを渡して、hadoop-streaming を使用しようとしましたが、重複が作成されたようです。(上記の例を使用すると、1 月 1 日のエントリ数は 140 万ではなく 250 万になりました)
これにどのようにアプローチするのが最善か、誰にもアイデアがありますか?