Как использовать Combine.perKey вместо GroupByKey в облачном потоке данных Google? - PullRequest
0 голосов
/ 07 июня 2018

Я читал, что Combine более эффективно группирует PCollection по ключам, поскольку он может порождать несколько рабочих и лучше распараллеливать.Однако я не могу найти решение, которое позволяет мне использовать CombineByKey с тем же эффектом, что и GroupByKey.Я получаю ошибки OOM при использовании GroupByKey.

Например: рассмотрим, у меня есть строка, содержащая два поля cookie_id и session_id.Я хочу сгруппировать все строки по cookie_id.Желаемый результат должен быть KV, где K - поле для группировки, а V - набор сгруппированных значений.Примерно так: {cookie_id=123, session_ids=[123,242,234,234]}.

пример кода, который использует преобразование GroupByKey:

PCollection<KV<String, TableRow>> KeyedRows = RowsWithGroupKey
                  .apply(WithKeys.of(new SerializableFunction<TableRow, String>() {
                @Override
                public String apply(TableRow row) {
                  return (String)row.get("cookie_id");
                }
              }));

            PCollection<KV<String, Iterable<TableRow>>> GroupedRows = KeyedRows
            .apply(GroupByKey.<String, TableRow>create());
            return GroupedRows;

Как мне добиться этого с помощью преобразования Combine?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...