Определение свойства двойного раздела в KSQL - PullRequest
0 голосов
/ 23 февраля 2020

В статье есть пример https://docs.confluent.io/current/ksql/docs/developer-guide/transform-a-stream-with-ksql.html:

CREATE STREAM pageviews_transformed
  WITH (TIMESTAMP='viewtime',
        PARTITIONS=5,
        VALUE_FORMAT='JSON') AS
  SELECT viewtime,
         userid,
         pageid,
         TIMESTAMPTOSTRING(viewtime, 'yyyy-MM-dd HH:mm:ss.SSS') AS timestring
  FROM pageviews
  PARTITION BY userid
  EMIT CHANGES;

Вы видите, что существует свойство определения двойных разделов. В предложении WITH мы определяем количество разделов для нового потока (topi c). В предложении GROUP BY - для входящих сообщений, чтобы можно было определить, в какой раздел отправить сообщение.

Мы создали поток с 5 разделами. Давайте представим, что у нас есть сообщения с 6 уникальными идентификаторами пользователей. В этом случае, как сообщения будут распределяться по этим 5 разделам?

1 Ответ

1 голос
/ 02 марта 2020

PARTITIONS - это число Kafka topi c разделов

PARTITION BY определяет, какая kafka ключ сообщения используется во время производства записи

Давайте представим, что у нас есть сообщения с 6 уникальными идентификаторами пользователей. В этом случае, как сообщения будут распределяться по этим 5 разделам

Через DefaultPartioner класс Кафки

...