【发布时间】:2021-03-14 04:16:04
【问题描述】:
我正在尝试将 JSON 数据从 Kafka 添加到 ClickHouse。这是简化的 JSON:
{
...
"sendAddress":{
"sendCommChannelTypeId":4,
"sendCommChannelTypeCode":"SMS",
"sendAddress":"789345345945"},
...
}
这是在ClickHouse中创建表的步骤,使用Kafka Engine创建另一个表并创建MATERIALIZED VIEW来连接这两个表,并将CH与Kafka连接。
创建第一个表
CREATE TABLE tab
(
...
sendAddress Tuple (sendCommChannelTypeId Int32, sendCommChannelTypeCode String, sendAddress String),
...
)Engine = MergeTree()
PARTITION BY applicationId
ORDER BY (applicationId);
使用 Kafka Engine SETTINGS 创建第二个表:
CREATE TABLE tab_kfk
(
...
sendAddress Tuple (sendCommChannelTypeId Int32, sendCommChannelTypeCode String, sendAddress String),
...
)ENGINE = Kafka
SETTINGS kafka_broker_list = 'localhost:9092',
kafka_topic_list = 'topk2',
kafka_group_name = 'group1',
kafka_format = 'JSONEachRow',
kafka_row_delimiter = '\n';
创建实体化视图
CREATE MATERIALIZED VIEW tab_mv TO tab AS
SELECT ... sendAddress, ...
FROM tab_kfk;
然后我尝试从第一个表中选择所有或特定项目 - 选项卡,但什么也得不到。日志关注
好的。只需在 sendAddress 中的花括号前添加 '[]',如下所示:
"authkey":"some_value",
"sendAddress":[{
"sendCommChannelTypeId":4,
"sendCommChannelTypeCode":"SMS",
"sendAddress":"789345345945"
}]
【问题讨论】: