我有一个非常简单的设置来将数据从Kafka插入到Clickhouse表中。我的数据流如下所示:
create table vflow.queue_ng
(
message String
)
engine = Kafka SETTINGS
kafka_broker_list = '100.127.201.11:9092,100.127.203.13:9092',
kafka_topic_list = 'netflow',
kafka_group_name = 'catflow_ng',
kafka_format = 'JSONAsString';
但是这个表只从一个代理!第一个或第二个代理获取数据流,但不能同时从两个代理获取。
对于每个代理(如果它被用作唯一的代理),它都工作得很好。
我试着用一个代理来使用队列表,如下所示:
create table vflow.queue_ng
(
message String
)
engine = Kafka SETTINGS
kafka_broker_list = '100.127.203.13:9092',
kafka_topic_list = 'netflow',
kafka_group_name = 'catflow_ng',
kafka_format = 'JSONAsString';
但是如果我添加第二个brocker并使用Kafka_broker_list = '100.127.201.11:9092,100.127.203.13:9092'重新创建表,那么它只能从一个源获取数据。
2条答案
按热度按时间klsxnrf11#
该主题有多少个分区?
分区分布在代理之间。如果您有一个分区,则只能从一个代理读取它。
如果您有多个分区,那么问题可能是,如果消息密钥不是最佳的,则所有消息都被写入一个分区。
第三件事是主题的复制因素。
vq8itlhq2#
Kafka的这两个示例是分开的、独立的,没有集群。
然后Clickhouse将引导到代理地址列表中的第一个可用“集群”。
类似地,生产者进程只向这些服务器单独发送数据。
如果要连接不同Kafka聚类(甚至是一个示例的聚类)中的数据,则需要两个不同的表定义,然后在查询中连接/联合数据