clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?
Posted
技术标签:
【中文标题】clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?【英文标题】:What is `macros` in clickhouse and what is use of `macros` in clickhouse?clickhouse 中的“宏”是什么,clickhouse 中的“宏”有什么用? 【发布时间】:2021-07-06 14:48:32 【问题描述】:Clickhouse 中的macros
是什么?
macros
在 Clickhouse 中的用例是什么?
<macros>
<cluster>MyFirstCluster</cluster>
<replica>chdw1-5</replica>
<shard>5</shard>
</macros>
config中各个属性的含义是什么?
在配置中分配每个属性的最佳做法是什么?
【问题讨论】:
【参考方案1】:它们用于复制引擎 ZK 路径。
https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/#creating-replicated-tables
CREATE TABLE table_name
(
EventDate DateTime,
CounterID UInt32,
UserID UInt32,
ver UInt16
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/layer-shard/table_name', 'replica', ver)
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)
每个 CH 节点都是独立的,不知道集群/分片/复制。
但 Replicated* 引擎使用 ZK 路径进行复制(将自己标识为副本)。这个 ZK 路径是从宏中渲染出来的。
所以在你的情况下,而不是
ReplicatedReplacingMergeTree('/clickhouse/cluster/tables/shard/table_name', 'replica', ver)
实际上宏会被替换。
【讨论】:
我知道 Zookeeper 是为了协调 Clickhouse 集群,但我没有得到macros
变量(尤其是 layer
)定义 macros
变量 e 的最佳实践是什么, g 如果我们想拥有一个带有X
分片和“Y”复制的 Clickhouse 集群,我们应该如何定义“宏变量”
您可以定义自己的宏。我认为您需要两个不同的分片宏 myshard1 , myshard2。在每个节点上设置两者。然后用不同的宏创建表。
如果我发现集群中的每台机器都正确,我们需要定义不同的macro.xml
来显示该机器在集群中的角色。我说的对吗?以上是关于clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?的主要内容,如果未能解决你的问题,请参考以下文章
在clickhouse中,投射失败时如何返回null而不是抛出异常?
Apache Doris 和 ClickHouse 的选型比较
Code: 210. DB::NetException: Connection refused (localhost:9000)