Флинк порционный Раковина - PullRequest
       36

Флинк порционный Раковина

0 голосов
/ 06 сентября 2018

Я пытаюсь использовать flink как в потоковом, так и в пакетном режиме, чтобы добавить много данных в Accumulo (несколько миллионов в минуту).Я хочу собрать записи перед отправкой их в Accumulo.Я принимаю данные либо из каталога, либо через kafka, преобразую данные с помощью плоской карты, а затем перехожу к RichSinkFunction, которая добавляет данные в коллекцию.

С потоковыми данными пакетирование выглядит нормально, в этом яМожно добавить записи в коллекцию фиксированного размера, которые отправляются в накопитель после достижения порогового значения партии.Но для пакетных данных, которые являются конечными, я изо всех сил пытаюсь найти хороший подход к пакетированию, так как это потребовало бы времени сброса в случае, если в течение определенного времени нет дополнительных данных.Кажется, что в отличие от Elastic-поиска или других альтернативных приемников, не существует соединителя Accumulo.

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

Кто-нибудь есть какие-нибудь указатели о том, как лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете получить доступ к таймерам в приемнике, реализовав ProcessingTimeCallback.Для примера посмотрите на BucketingSink - его open и onProcessingTime должны помочь вам начать.

...