为啥只获取本地数据而不是集群的所有数据?

Posted

技术标签:

【中文标题】为啥只获取本地数据而不是集群的所有数据?【英文标题】:Why get only local data instead of all data of the cluster?为什么只获取本地数据而不是集群的所有数据? 【发布时间】:2021-06-25 07:36:53 【问题描述】:

我的 clickhouse 集群(3 个节点)有 3 个分片 1 个副本。我在node1上使用follow ddl创建了一个表:

CREATE TABLE partition_v3_cluster ON CLUSTER perftest_3shards_3replicas(
ID String,
URL String,
EventTime Date
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventTime)
ORDER BY ID;

然后我执行以下 sqls 一对一节点:

INSERT INTO partition_v3_cluster VALUES ('A0001','www.nauu.com', '2019-10-01');
INSERT INTO partition_v3_cluster VALUES ('A0002','www.nauu.com', '2019-10-02');
INSERT INTO partition_v3_cluster VALUES ('A0003','www.nauu.com', '2019-10-03');

分别查询全部3个节点时:

select * from partition_v3_cluster;

每个节点只获得在每个节点上执行之前的记录插入: 例如节点1:

┌─ID────┬─URL──────────┬──EventTime─┐
│ A0001 │ www.nauu.com │ 2019-10-01 │
└───────┴──────────────┴────────────┘

不应该获取所有数据吗?

【问题讨论】:

【参考方案1】:

您需要创建 DISTRIBUTED 表。

https://kb.altinity.com/engines

https://www.youtube.com/watch?v=4DlQ6sVKQaA&t=17s

【讨论】:

以上是关于为啥只获取本地数据而不是集群的所有数据?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 NSBundle 只返回与用户的语言偏好匹配的包中存在的第一个本地化而不是所有匹配?

Spark 在本地机器而不是独立集群中运行

将 C# Storm 拓扑部署到本地/本地 Storm 集群

PostgreSQL:单个数据库而不是整个集群的时间点恢复

Redis集群

如何将 Azure 数据工厂与 SQL 端点而不是交互式集群连接?