【发布时间】:2018-09-14 03:17:24
【问题描述】:
按照文档中的示例: https://clickhouse.yandex/docs/en/table_engines/kafka/
我使用 Kafka 引擎和一个将数据推送到 MergeTree 表的物化视图创建了一个表。
这是我的表格的结构:
CREATE TABLE games (
UserId UInt32,
ActivityType UInt8,
Amount Float32,
CurrencyId UInt8,
Date String
) ENGINE = Kafka('XXXX.eu-west-1.compute.amazonaws.com:9092,XXXX.eu-west-1.compute.amazonaws.com:9092,XXXX.eu-west-1.compute.amazonaws.com:9092', 'games', 'click-1', 'JSONEachRow', '3');
CREATE TABLE tests.games_transactions (
day Date,
UserId UInt32,
Amount Float32,
CurrencyId UInt8,
timevalue DateTime,
ActivityType UInt8
) ENGINE = MergeTree(day, (day, UserId), 8192);
CREATE MATERIALIZED VIEW tests.games_consumer TO tests.games_transactions
AS SELECT toDate(replaceRegexpOne(Date,'\\..*','')) as day, UserId, Amount, CurrencyId, toDateTime(replaceRegexpOne(Date,'\\..*','')) as timevalue, ActivityType
FROM default.games;
在 Kafka 主题中,我每秒收到大约 150 条消息。
一切都很好,表中数据更新的部分延迟很大,肯定不是实时的。
似乎只有当我达到65536条新消息准备在Kafka中消费时,数据才会从Kafka发送到表
我应该设置一些特定的配置吗?
我尝试从 cli 更改配置:
SET max_insert_block_size=1048
SET max_block_size=655
SET stream_flush_interval_ms=750
但没有任何改善
我应该更改任何特定配置吗?
我应该在创建表之前更改上述配置吗?
【问题讨论】:
-
可能你客户端的Kafka驱动配置为在发送之前累积事件?
-
嗨 @Nikolay 不,我有 5 个不同的 Kafka 主题。其中 4 个以 1 条消息/秒的速率发送事件,它们工作正常。其中只有一个每秒发送大约 150 条消息,并且存在此问题。