Как разбить одну тему Кафки на несколько небольших тем Кафки?

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

1 ответ

Правда. С kafkaStreams вы можете непрерывно читать из любой темы в брокере, обрабатывать данные с условной (в вашем случае в id) и записывать обратно в брокер в любых других выходных темах. При желании, чтобы проверить результаты в них, вы можете подписаться на эти темы вывода от любого другого слушателя. Это легко и быстро.

Вы можете использовать KSQL и создавать новые темы с помощью SQL-запроса:

CREATE STREAM pageviews(
    viewtime BIGINT KEY,
    userid VARCHAR,
    pageid VARCHAR
  ) WITH (
    KAFKA_TOPIC='pageviews',
    VALUE_FORMAT='DELIMITED',
    PARTITIONS=4,
    REPLICAS=3
  );

https://docs.ksqldb.io/en/latest/developer-guide/create-a-stream/

Или, как упоминал @Matthias J. Sax в KStreams: https://kafka.apache.org/23/javadoc/org/apache/kafka/streams/kstream/KStream.html

Другие вопросы по тегам