Как мне прочитать одно и то же начальное смещение в каждой микропакете в задании потоковой передачи с искрой - PullRequest
1 голос
/ 23 апреля 2020

Я использую потоковое структурирование искры. Можно ли сбрасывать смещение Кафки после каждого выполнения пакета, чтобы каждый пакет считывал из одного и того же начального смещения вместо только вновь обнаруженных событий?

Цитирование описания startingOffsets из документации по интеграции с Kafka spark здесь

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

Прямо сейчас я делаю это, создавая внутреннюю структуру данных c из Кафки для каждого пакета l oop и используя фиктивный потоковый набор данных с форматом «скорость». Хотите знать, есть ли лучший способ сделать это

1 Ответ

0 голосов
/ 23 апреля 2020

Для структурированной потоковой передачи можно установить startingOffsets на earliest, чтобы каждый раз, когда вы потребляете самое раннее доступное смещение. Следующее будет делать трюк

.option("startingOffsets", "earliest")

Однако обратите внимание, что это эффективно только для вновь созданных запросов:

startingOffsets

Начальная точка при запуске запроса: либо "earliest" с самых ранних смещений, "latest" с самых последних смещений, либо строка json, указывающая начальное смещение для каждого раздела темы. В json, -2 в качестве смещения можно использовать для обозначения самого раннего, -1 до самого позднего. Примечание. Для пакетных запросов последние (неявно или с использованием -1 в json) не допускаются. Для потоковых запросов это применимо только при запуске нового запроса, и это возобновление всегда будет начинаться с того места, где запрос был остановлен . Вновь обнаруженные разделы во время запроса начнутся в ближайшее время.


В качестве альтернативы, вы также можете изменить группу потребителей каждый раз:

.option("kafka.group.id", "newGroupID")
...