Мне нужно сбросить неограниченный PCollection элементов значения ключа в агрегаты каждой клавиши (вывод агрегата после каждого ввода был применен). Важно, чтобы значения складывались в правильном порядке, и похоже, что это не поддерживается пользовательскими комбинаторами. Пропускная способность для каждой клавиши будет довольно низкой, но общая пропускная способность будет очень высокой. Есть ли способ сделать это в Dataflow?Складывающиеся элементы в значения
0
A
ответ
2
Правильно, комбинаторы неупорядочены. Это связано с тем, что неупорядоченное объединение имеет большой смысл в модели Beam, которая позволяет использовать поздние данные (что бы вы хотели, чтобы поведение было в вашем случае, в случае получения поздних данных?), А также потому, что оно допускает очень эффективную реализацию и в в большинстве случаев это все, что нужно.
Один из способов решить эту проблему для вашего случая, пожертвовав некоторой эффективностью, является реализация пользовательских CombineFn, где:
- аккумулятора, а также тип вывода, является «список входных элементов, отсортированных по отметка времени».
- Вставка элемента в аккумулятор вставляет его в отсортированный список
- Слияние двух аккумуляторов объединяет отсортированные списки.
- Извлечение выходного сигнала из аккумулятора является функцией идентификации.
В основном вы будете использовать зерноуборочный поддерживать упорядоченный список значений для каждого ключа, и вы получите PCollection<KV<K, List<V>>>
, к которому можно применить ParDo
с складкой.
Смежные вопросы
- 1. Динамически складывающиеся складные элементы
- 2. Элементы CSS li, складывающиеся сверху друг друга
- 3. складывающиеся в разъяснении
- 4. Автоматически складывающиеся #defines в vim
- 5. Столбцы, складывающиеся на фундамент
- 6. Бутстрап вложенные складывающиеся панели
- 7. Bootstrap несколько столбцов складывающиеся
- 8. В каких случаях складывающиеся типы U_FOLD_CASE_DEFAULT ссылаются?
- 9. Загрузочные панели, складывающиеся после строки
- 10. Абсолютные позиционированные динамические кнопки, складывающиеся?
- 11. Изображения, складывающиеся друг на друга
- 12. Складывающиеся наборы с общими элементами?
- 13. IntelliJ IDEA: Пользовательские регионы, складывающиеся в xml
- 14. складывающиеся пользовательские области в идее IntelliJ (typeScript)
- 15. Складывающиеся пустые строки в письмах ExactTarget ... Как?
- 16. Sass/CSS складывающиеся треугольники в шестиугольниках
- 17. VIM синтаксис складывание: отключить складывающиеся многострочные комментарии
- 18. Латексный принтер Sympy, складывающиеся короткие фракции
- 19. Jekyll заголовки блога, складывающиеся друг над другом
- 20. Добавление значения в элементы коллекции
- 21. «Складывающиеся» длинные разделы кода в Visual Studio 2008
- 22. Кнопки панели инструментов, складывающиеся в tinymce на ie8
- 23. Установить элементы структуры в значения в определении
- 24. Окна MDIchild, не складывающиеся больше, чем центр экрана. Известный предел?
- 25. 2D Tower Defense - Установки, складывающиеся друг на друга
- 26. Population ComboBoxDataColumn элементы и значения
- 27. Изображения, складывающиеся на вершине eachother несмотря на flowlayout?
- 28. Правильно складывающиеся (соскальзывающие) строки заголовка по электронной почте
- 29. Складывающиеся разделы и несколько пользовательских UITableViewCell для каждого раздела
- 30. Counting список значения элементы в FileMaker
Похоже, что это сработает, но со временем состояние со временем будет расти - я надеялся на решение, где мне нужно было только поддерживать агрегированное состояние. –
Я думаю, что для моего случая использования нормально применять события в обработке временного порядка - так что мне не нужно было бы опоздать, так как поздние события просто заходили в открытое в то время окно, которое было получено, не так ли? –
Итак: учитывая предстоящий API состояния (BTW это скоро?: -D) Я бы мог иметь ParDo, который сохраняет текущее состояние за ключ в глобальном окне и просто применяет события по мере их появления ... если там тоже не заказывается, и в этом случае мне придется (я думаю) 1) хранить фиксированные временные окна на основе времени обработки; 2) GroupByKey; 3) помещено в новое глобальное окно; и 4) имеют сортировку ParDo и применяют события. Я думаю. –