2015-02-12 1 views
0

Я хотел бы обрабатывать кортежи в пакетах, для которых я думаю об использовании Trident API. Однако никаких операций, которые я выполняю пакетами здесь. Каждый кортеж обрабатывается индивидуально. Все, что мне нужно, это точно-один раз семантика, так что каждый кортеж обрабатывается только один раз, и это единственная причина для использования Trident.Как написать топологию трезубца без агрегатов?

Я хочу сохранить информацию о том, какой кортеж обрабатывается, так что, когда пакет воспроизводится, кортеж не будет выполнен, если он уже обработан.

Топология содержит persistentAggregate() метода, но это требует некоторой операции агрегации, но у меня нет каких-либо операций агрегации для выполнения на множестве кортежей, как каждый кортеж обрабатываются индивидуально.

Здесь функции, выполняемые кортежем, слишком малы для выполнения. Итак, я ищу для обработки их партиями, чтобы сэкономить вычислительные ресурсы и время.


Теперь, как написать топологию, которая потребляет кортежи в партии, но по-прежнему не выполняет никаких пакетных операций (таких как количество слов)?

ответ

0

Похоже, что вам нужен раздел. Он должен быть снабжен государством (или государственным заводом), полями для сохранения и обновлением. В целях развития проверьте MemoryMapState - это в основном хэш-память в памяти. Для производства вы можете использовать, скажем, cassandra - проверьте примеры на https://github.com/hmsonline/storm-cassandra-cql