У меня есть вариант использования, в котором мне нужно вывести несколько T
из DoFn. Итак, DoFn
функция возвращает PCollection<List<T>>
. Я хочу преобразовать его в PCollection<T>
, чтобы позже в конвейере я мог просто фильтровать, например:
PCollection<T> filteredT = filterationResult.apply(Filter.byPredicate(p -> p.equals(T) == T));
На данный момент лучший способ, который я могу придумать, - это вместо того, чтобы возвращать List<T>
из функции ParDo
, я возвращаю KV<String,List<T>>
с одним и тем же ключом для каждого элемента. Затем в конвейере я могу сделать следующее, чтобы объединить результат:
filterationResult.apply("Group", GroupByKey.<String, List<T>>create())
Или я могу вызвать c.output(T)
из DoFn (где c
- переданный объект ProcessContext
) несколько раз?