【发布时间】:2021-12-06 04:13:45
【问题描述】:
我创建了一个以 JSONAsString 格式读取 kafka 主题的表
CREATE TABLE tracking_log_kafka_raw
(
jsonString String
) ENGINE = Kafka
SETTINGS
kafka_broker_list = 'kafka:9092',
kafka_topic_list = 'tracking_log_new',
kafka_group_name = 'test_1',
kafka_format = 'JSONAsString';
决赛桌
CREATE TABLE k_t_res
(
jsonString String
) ENGINE = MergeTree()
ORDER BY jsonString
SETTINGS index_granularity = 8192;
物化视图
CREATE MATERIALIZED VIEW test_c TO k_t_res
AS
SELECT *
FROM tracking_log_kafka_raw;
但是当我写入 kafka 时,消息进入 tracking_log_kafka_raw 表,但它们没有被触发 mat view ,所以没有任何东西进入最终 k_t_res 表。
我尝试使用 JSONEachRow 格式并且一切正常,但是 kafka 中的消息格式不允许使用它。
【问题讨论】:
-
错误日志中应该有条目,如果您演示它们,这将极大地帮助解决问题。路径应该像
/ var / log / clickhouse-server / clickhouse-server.err.log -
我在写卡夫卡的时候看了日志,没有错误。有连接超时相关的错误:
{} <Warning> StorageKafka (tracking_log_kafka_raw): [rdk:MAXPOLL] [thrd:main]: Application maximum poll interval (300000ms) exceeded by 45ms (adjust max.poll.interval.ms for long-running message processing): leaving group -
嗯,既然消息是用Kafka引擎入表的,那么读取kafka的时候就不会出错了。显然从这个表转移到
k_t_res的时候会出错,很可能是字段类型不兼容,在物化视图这边需要强制转换类型。 -
听起来不错,但我不明白为什么类型不兼容,到处都指定了String。我也尝试使用
JSONExtractString(jsonString, 'guid')返回字符串字段
标签: apache-kafka clickhouse materialized-views