Я читал, что 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?