Истек срок действия кортежей в падающем окне Apache Storm - PullRequest
1 голос
/ 11 октября 2019

Я реализовал Tumbling Window (на основе количества) размером 100. При запуске топологии я вижу, что количество новых кортежей (inputWindow.get) и количество просроченных кортежей (inputWindow.getExpired) равны 100. Я установил время сообщения из 600 секунд. С этим тайм-аутом я не ожидал истечения срока действия кортежа. В чем может быть причина истечения срока действия кортежей? Я установил болт как bolt.withTumblingWindow (Count.of (100)) У болта есть параллелизм_hint 120

builder.setBolt ("болт", bolt.withTumblingWindow (Count.of (100)), 120) .shuffleGrouping ( "носик")

1 Ответ

1 голос
/ 18 октября 2019

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

Это кортежи, которые были выселены из текущего окна, но присутствовали в последнем окне. Они не являются кортежами, у которых истекло время ожидания сообщения, хотя, разумеется, в этом смысле они также могут истекать.

Итак, допустим, вы получили 200 кортежей. Ваше первое окно будет кортежем 0-99, без кортежей с истекшим сроком. Ваше второе окно будет кортежом 100–199, где истек срок действия кортежа 0–99.

Причина, по которой это полезно, - в случае раздвижных окон, где окна не пересекаются. В этом случае вы можете получить, например, окно 0-99, затем 50-149, затем 99-199. Там может быть полезно, если вам скажут, что «кортежи 0-49 больше не находятся в окне», вместо того, чтобы вычислять это самостоятельно.

Для получения дополнительной информации об этом, посмотрите на класс управляющих окон в https://github.com/apache/storm/blob/925422a5b5ad1c3329a2c2b44db460ae94f70806/storm-client/src/jvm/org/apache/storm/windowing/WindowManager.java

...