Как конвертировать PCollection ‹List ‹String›› в PCollection ‹String› в потоке данных / луче

У меня есть вариант использования, в котором мне нужно вывести несколько 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) несколько раз?


person PUG    schedule 11.06.2017    source источник


Ответы (1)


Вы можете звонить c.output(T) из DoFn несколько раз.

Также существует преобразование библиотеки _ 3_, но в этом случае он вам не нужен.

person Kenn Knowles    schedule 12.06.2017