Несколько последовательных приемников в API набора данных Flink - PullRequest
0 голосов
/ 10 октября 2019

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

  1. Чтение файла с более чем 90 миллионами строк
  2. Выполнение некоторых преобразований
  3. Публикация данных в упругом поиске
  4. Публикация уведомления с некоторыми метаданными в нижестоящих системах о том, что задание выполнено, и они могут читать считанные данные из эластичного поиска

Проблема 1: Я сделалнет простого способа опубликовать данные вasticsearch, в API набора данных flink нет встроенной функции вывода, позволяющей публиковать данные только для упростить поиск данных, которые я мог найти, записывая в файл или реализуя пользовательскую функцию

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

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

Есть ли способ решить эту проблему?

Во-вторых, написание elausesearch в функции карты не кажется правильным, это не преобразование, а вывод, так как мне нужны здесь 2 последовательных приемника, есть ли более чистый способ сделать это? Ниже приведена схема потока образца

enter image description here

1 Ответ

0 голосов
/ 10 октября 2019

Я думаю, что лучший подход для решения вашего дела:

  1. Загрузка файла в таблицу
  2. Преобразование таблицы в DataStream , вы можете манипулировать даннымииспользуя таблицу API или после преобразования.
  3. Вставьте данные в эластичный элемент с помощью эластичного соединителя

Если вы хотите понять, завершилось ли задание, вы можетепроверьте numRecordsOutPerSecond метрики.

...