Проблема с чтением топика kafka в ClickHouse
Имею следующее:
- Таблица c Kafka engine
- Локальная таблица с движком MergeTree
- Материализованное представление для выбора из таблицы Kafka в локальную таблицу
Собственно все по Документации
create table any_schema.queue_table
(
session_id UInt32,
category_id String,
....
)
engine = Kafka SETTINGS kafka_broker_list = 'ip:port', kafka_topic_list = 'topic_name', kafka_group_name = 'group_name', kafka_format = 'AvroConfluent', kafka_commit_every_batch = 1, kafka_max_block_size = 1048576, kafka_num_consumers = 1, kafka_thread_per_consumer = 1, format_avro_schema_registry_url = 'schema_url', kafka_schema = 'name_schema', input_format_avro_allow_missing_fields = 1;
CREATE TABLE any_schema.table (
session_id UInt32,
category_id String,
....
) ENGINE = MergeTree()
ORDER BY (session_id, category_id)
PARTITION BY session_id
TTL now() + INTERVAL 5 DAY;
CREATE MATERIALIZED VIEW any_schema.queue_table_mvw TO any_schema.table
AS SELECT *
FROM any_schema.queue_table;
Проблема в следующем, на стороне приложений схема генерируется и обновляется автоматически, при первом формировании таблиц обнаружил ошибку расхождение типов некоторых полей с описанием схемы.
2021.04.29 09:30:03.124184 [ 85 ] {} <Error> void DB::StorageKafka::threadFunc(size_t): Code: 44, e.displayText() = DB::Exception: Type UInt16 is not compatible with Avro union:
[
"double",
"long"
]: column **name_column**, Stack trace (when copying this message, always include the lines below):
После правки приложения и таблицы (пересоздал все), продолжаю ловить эту же ошибку. Хотя в регистре схем схема верная, и вообще отказался от union типов. Есть предположение что кликхаус кеширует схему у себя, но по какому принципу - для меня вопрос. Менял группу консьюмера для таблицы, на помогло.
Может кто сталкивался с подобным? Или знает как посмотреть весь кеш КХ (предположительно, может дело не в нем). Так как в дальнейшем предполагается обновление схем, хотелось бы сразу разобраться с этим моментом.