【问题标题】:Deduplication in distributed clickhouse tables分布式 Clickhouse 表中的重复数据删除
【发布时间】: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


【解决方案1】:

是的。节点之间没有替换(合并)。 您应该使用分片键并将具有相同主键的记录放置到一个节点。例如,您可以插入分布式 egnine(从 Kafka 使用 MaterializedView)并根据主键(而不是 rand())设置一些分片表达式。

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2023-03-18
    • 2017-11-06
    • 2023-02-06
    • 2021-01-05
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多