【问题标题】:Clickhouse Null table engine not incrementing AggregatingMergeTree correctly on clusterClickhouse 空表引擎未在集群上正确递增 AggregatingMergeTree
【发布时间】:2022-12-16 17:34:07
【问题描述】:

我使用的 ClickHouse 版本:22.11-alpine

我在我的项目中使用Null表引擎作为临时表,数据将从中发送到ReplicatedAggregatingMergeTree

这个描述的测试用例表明问题:

CREATE TABLE default.data ON CLUSTER '{cluster}'
(
    id Int8,
    group_by String,
    value Int8
)
ENGINE = Null;

CREATE TABLE default.data_agg ON CLUSTER '{cluster}'
(
    group_by String,
    value AggregateFunction(sum, Int8)
)
ENGINE = ReplicatedAggregatingMergeTree
ORDER BY group_by;

CREATE MATERIALIZED VIEW default.data_agg_mv ON CLUSTER '{cluster}'
TO default.data_agg AS
SELECT
    group_by,
    sumState(value) as value
FROM default.data
GROUP BY group_by;

CREATE TABLE default.data_agg_dis ON CLUSTER '{cluster}'
AS default.data_agg
ENGINE = Distributed('{cluster}', default, data_agg, rand());

所有这些模式都在集群 (ClickHouse Keeper) 上创建,具有 4 个节点、4 个分片和 2 个副本。

问题:

INSERT INTO default.data VALUES (1, 'group1', 1);

上面的第一次插入查询正确地增加了 data_agg_dis 中的值:

SELECT group_by, sumMerge(value) as value FROM default.data_agg_dis GROUP BY group_by;

Results:
group_by | value
group1   |   1

但是,当我尝试为 group_by: group1 重复提到的插入值时,value 达到了 value: 4。感觉就像所有分片接触所有其他聚合时被跳过。

但是,如果我将插入查询中的 group_by: group1 值从 1 更改为 2:

    INSERT INTO default.data VALUES (1, 'group1', 2);

再次在 data_agg_dis 中,值递增 2、四次并停止。此行为仅在单节点 ClickHouse 服务器的集群上可重现,所有工作均按预期进行。

Does anybody aware of same issue? it is some limitation of ClickHouse cluster? or bug?

【问题讨论】:

标签: clickhouse


【解决方案1】:

您的 ReplicatedAggregatingMergeTree 只是按块应用重复数据删除,因为您尝试插入相同的数据。

查看https://clickhouse.com/docs/en/operations/settings/settings/#settings-insert-deduplicate了解详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2021-05-21
    • 2020-04-18
    • 1970-01-01
    • 2021-04-03
    • 2019-08-12
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多