KSQL中定义的双分区属性
Double partition property defining in KSQL
文章中有例子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 子句中,我们为全新的流(主题)定义了分区数。在 GROUP BY 子句中 - 对于传入的消息,以便能够定义向哪个分区发送消息。
我们创建了一个包含 5 个分区的流。假设我们有带有 6 个唯一用户 ID 的消息。在这种情况下,消息将如何分布在这 5 个分区上?
PARTITIONS
是Kafka的topic分区数
PARTITION BY
定义记录生产过程中使用哪个kafka message key
Let's imagine that we have messages with 6 unique userid. In this case how will messages be distributed over that 5 partitions
通过 Kafka 的 DefaultPartioner
class
文章中有例子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 子句中,我们为全新的流(主题)定义了分区数。在 GROUP BY 子句中 - 对于传入的消息,以便能够定义向哪个分区发送消息。
我们创建了一个包含 5 个分区的流。假设我们有带有 6 个唯一用户 ID 的消息。在这种情况下,消息将如何分布在这 5 个分区上?
PARTITIONS
是Kafka的topic分区数
PARTITION BY
定义记录生产过程中使用哪个kafka message key
Let's imagine that we have messages with 6 unique userid. In this case how will messages be distributed over that 5 partitions
通过 Kafka 的 DefaultPartioner
class