Я пытаюсь реализовать конвейер пакетной обработки данных на пороге, где мне нужно
- Чтение файла с более чем 90 миллионами строк
- Выполнение некоторых преобразований
- Публикация данных в упругом поиске
- Публикация уведомления с некоторыми метаданными в нижестоящих системах о том, что задание выполнено, и они могут читать считанные данные из эластичного поиска
Проблема 1: Я сделалнет простого способа опубликовать данные вasticsearch, в API набора данных flink нет встроенной функции вывода, позволяющей публиковать данные только для упростить поиск данных, которые я мог найти, записывая в файл или реализуя пользовательскую функцию
Проблема 2: Чтобы решить проблему-1, я публикую данные вasticsearch в функции карты. Оператор карты определен с параллелизмом 4. Я определяю выходную функцию с параллелизмом 1, но я не буду знать, когда все экземпляры операторов завершат обработку, чтобы я мог опубликовать сообщение ниже.
Я не хочуотправлять уведомления для каждого события по теме, но одно сообщение по теме, подтверждающее, что все 90 миллионов строк обработаны, и потребители теперь могут запрашивать данные изasticsearch.
Есть ли способ решить эту проблему?
Во-вторых, написание elausesearch в функции карты не кажется правильным, это не преобразование, а вывод, так как мне нужны здесь 2 последовательных приемника, есть ли более чистый способ сделать это? Ниже приведена схема потока образца