Clickhouse:kafka broken messages错误处理
Clickhouse: kafka broken messages error handling
Clickhouse 版本 21.12.3.32。我正在关注此 PR(https://github.com/ClickHouse/ClickHouse/pull/21850) 以处理来自 kafka 主题的错误消息,但经过一些调查后我发现如果一条消息包含损坏的数据,则无法解析整批接收到的消息,它可以导致数据丢失。
卡夫卡引擎table:
CREATE TABLE default.kafka_engine (message String)
ENGINE = Kafka
SETTINGS
kafka_broker_list = 'kafka:9092',
kafka_topic_list = 'topic',
kafka_group_name = 'group',
kafka_format = 'JSONAsString',
kafka_row_delimiter = '\n',
kafka_num_consumers = 1,
kafka_handle_error_mode ='stream';
损坏的消息示例:[object Object]
第一条消息错误:JSON object must begin with '{'.: (at row 1)
。
其他消息错误:Cannot parse input: expected ']' at end of stream.
.
是否可以只跳过那条损坏的消息并正确解析从 kafka 主题收到的一批消息中的其他消息?
将 kafka_format 更改为 RawBLOB
解决了我的问题。
Clickhouse 版本 21.12.3.32。我正在关注此 PR(https://github.com/ClickHouse/ClickHouse/pull/21850) 以处理来自 kafka 主题的错误消息,但经过一些调查后我发现如果一条消息包含损坏的数据,则无法解析整批接收到的消息,它可以导致数据丢失。
卡夫卡引擎table:
CREATE TABLE default.kafka_engine (message String)
ENGINE = Kafka
SETTINGS
kafka_broker_list = 'kafka:9092',
kafka_topic_list = 'topic',
kafka_group_name = 'group',
kafka_format = 'JSONAsString',
kafka_row_delimiter = '\n',
kafka_num_consumers = 1,
kafka_handle_error_mode ='stream';
损坏的消息示例:[object Object]
第一条消息错误:JSON object must begin with '{'.: (at row 1)
。
其他消息错误:Cannot parse input: expected ']' at end of stream.
.
是否可以只跳过那条损坏的消息并正确解析从 kafka 主题收到的一批消息中的其他消息?
将 kafka_format 更改为 RawBLOB
解决了我的问题。