【发布时间】:2020-10-18 08:47:28
【问题描述】:
我对 clickhouse 中的分布式表有疑问。假设我有两个带有 clickhouse 的节点。每个节点都有带有 ReplacingMergeTree 引擎的数据表(我知道它不能保证完全重复数据删除,我可以接受),其中数据从 kafka 通过 kafka 引擎表(每个节点从自己的主题读取)。并在每个节点上创建 datatable_distributed 表。现在,出于某种原因,在每个 kafka 主题中都有绝对相同的信息。我是否正确理解,在一天结束时,对distributed_table 进行查询我会看到两行带有该消息的消息,仅仅是因为distributed 只是从不同集群上的两个数据表中读取并且没有重复数据删除?
【问题讨论】:
-
看看这个How to avoid duplicates in clickhouse table?。所以目前重复数据删除是 Relicated-merge 引擎的特性。
-
这不是我的问题的答案。我的问题是,如果我在 ReplacingMergeTree 表之上有分布式引擎会发生什么
-
替换*-engine 并不能保证“最终”去重,因为重复的行可以存储在彼此独立存在的不同分区中(它假设同一分区的不同部分中的重复行最终是合并和“去重”)。分布式表只是从分片收集数据,而不是重复数据删除。在您的情况下,可能需要正确配置 Kafka-consumer(又名物化视图)上的过滤器,以将重复的行驻留在 same 节点。
标签: clickhouse