Предположим, что мы имеем поток событий с событиями со следующими двумя признаками:Что происходит при использовании нескольких полей при группировке полей?
{"first_name", "last_name"}
и разделим на обоих атрибутов с использованием fieldsgrouping:
.fieldsgrouping{"spout", new Fields("first_name", "last_name")}
Болт обработки распараллеливается двумя задачами и следующие события вводят поток в указанном порядке:
1: {"foo", "foo"}
2: {"bar", "bar"}
3: {"foo", "bar"}
Теперь события 1 и 2 идут к задаче один и два соответственно, что произойдет с событием 3? Если он переходит к любой задаче, он разбивает полягруппы атрибута.
Как справляется Сторм? Или я не понимаю fieldsgrouping правильно?
Edit:
Думая об этом немного больше я, наверное, неправильно поведение fieldsgrouping. Если оба поля считаются связанными событиями 1, 2 и 3, каждый считается отдельным разделом. Удаление проблемы.
Тем не менее, это не сразу видно с официального лица documentation Я могу найти на fieldsgrouping.
Если кто-нибудь может указать мне на более подробную документацию.
Собственное наблюдение является правильным. Три кортежа относятся к другому «логическому разделу» каждый, потому что они не равны по всем полям. Таким образом, проблем нет. Я также думаю, что документация является точной (возможно, не полной): «Группировка полей: поток разделяется полями, указанными в группировке. [...]« Он говорит «поля», т. Е. Множественное число. Даже если в примере используется только одно поле для группировки, если вы экстраполируете это, ясно, что для нескольких полей группировки все значения полей должны быть одинаковыми, если два кортежа принадлежат одной группе/разделу. –