入力の各行にレコードがあり、各レコードには約 10 個のフィールドがあります。まず、レコードを 3 つのフィールドでグループ化して、(field1, field2, field3)
1 つのマッパー/リデューサーが (3 つのフィールドに基づいて) 1 つの一意のグループを担当するようにします。各グループ内で、別の整数フィールドに基づいてレコードを並べ替え、別のフィールドを追加timestamp
してグループ内の各レコードに同じタグaTag
を付けます。
mapper#1 でソートされたグループに としてタグを付け、aTag
mapper#2 で別のグループ (最初に 3 つのフィールドに基づいてレコードをグループ化したため別のグループ) に同じタグを付けたとしaTag
ます。
ここで、タグ フィールドに基づいてレコードをグループ化すると (つまり、異なるマッパーでグループをグループ化すると)、各グループ内の順序が保持されていないことに気付きます。各マッパーにはすべてのレコードが同じタグを持つグループがあるため、タグ名によるグループ化には、他のマッパーから関連するグループを取得し、個々のグループを並べ替えずにそれらを連結するだけでよいと予想していました。
レコードを gzip 形式で保存しようとしているために、圧縮を改善するためにレコードを並べ替えようとしているためですか? また、タグ名でグループ化した後に順序を保持する方法を知りたいです。