我在每行输入中都有一条记录,每条记录大约有 10 个字段。首先,我将记录按三个字段分组,(field1, field2, field3)
因此一个映射器/还原器负责一个唯一组(基于三个字段)。在每个组中,我根据另一个整数字段对记录进行排序,并通过添加另一个字段timestamp
将组中的每个记录标记为相同的标签。aTag
假设在 mapper#1 中,我将一个排序组标记为aTag
,在 mapper#2 中,我用相同的 tag 标记另一个组(一个不同的组,因为我最初根据三个字段对记录进行分组)aTag
。
现在,如果我根据标签字段对记录进行分组(即,在不同的映射器中对组进行分组),我注意到每个组内的顺序不再保留。我期待由于每个映射器都有一个所有记录都具有相同标签的组,因此按标签名称进行分组应该只涉及从其他映射器获取相关组并将它们连接起来而无需重新排序每个单独的组。
是因为我试图以 gzip 格式存储记录,因此它试图重新排序记录以获得更好的压缩吗?另外我想知道如何在按标签名称分组后保留订单。