2015-03-18 1 views
0

У меня есть болт, который загружает данные из файла на диске (скажем /blah/blah/movie_data.csv), используя метод (скажем loadDataFromFile()) и сохраняет его в памяти. Этот файл обновляется каждый день до 10 часов утра (гарантированно обновляется до 10 утра). Я хочу, чтобы мой болт перезагрузил все данные в файле после его обновления (в любое время вскоре после 10 часов утра).Опрос и запуск задачи в штурмовом болте

Как это реализовать? Должен ли я опросить movie_data.csv и проверить, что временная метка более поздняя, ​​чем последнее время загрузки файла, и если да, активируйте метод loaddataFromFile()? Или это можно сделать, используя некоторую форму tick кортежей?

Мне не нужен код/​​псевдокод. Просто некоторые указатели на библиотеки/классы, которые могут иметь значение. Я уже посмотрел на кортеж tick, но, похоже, это не помогает, так как я хочу обновить файл в определенное время, а не каждые T секунд.

Есть ли способ для болта получить кортеж tick в назначенное время (например, 10 часов ежедневно)? Таким образом, мне не нужно будет использовать опрос, чтобы проверить, обновлен ли файл.

+0

Кто пишет файл, вы какое-то влияние на этот процесс? Я бы лично создал MD5 или SHA1 файла, поместил его в хранилище данных и проверил его на носике, чтобы запустить процесс, если он изменился. – zenbeni

ответ

0

Это зависит от того, используете ли вы топологию Trident или нет. Если это топология Trident, вы можете реализовать storm.trident.spout.BatchSpoutExecutor и BatchSpoutExecutor.BatchSpoutEmitter. Как я помню, проверьте примеры Trident, когда они реализуют эти интерфейсы.

Надеюсь, что это поможет.

+0

Кроме того, вы можете использовать галочку Tuple и обновлять каждые 24 x 3600 с, соответствующие обновлению каждый день;) – JFPicard

+0

Я не использую Trident. 24x3600 не будет работать, потому что, если я начну свою топологию в 7 утра, тогда она будет генерировать тик-кортеж каждый день в 7 утра вместо 10 часов утра. – Nik

+0

Можете ли вы подождать, как за час до обработки? Если вы обрабатываете файл в 11 часов утра, слишком поздно? Если нет, возможно, отметьте его каждый час? Кроме того, когда вы начинаете топологию, возможно, используйте сон, прежде чем начинать его, чтобы добраться до нужного времени, а затем подождать один день с отметкой? – JFPicard