184 похожих чатов

Коллеги, извините, повторяю вопрос, ибо актуально Кратко: Создаем table engine=kafka, создаем

materialized view .. to ... для доставки данных из топика в таблицу. Данные не идут, нигде никаких ошибок не вижу. Если делать вставку
insert into historyvalues select ... (запрос идентичный MV)
то данные вставляются.

Где искать проблему? Куда, в какие логи смотреть?

Пространно:
Создаем очередь
CREATE TABLE queue
(
value String
)
ENGINE = Kafka
SETTINGS kafka_broker_list = '192.168.XX.XX:9092',
kafka_topic_list = 'topicQueueTest',
kafka_group_name = 'group1',
kafka_format = 'LineAsString';

Создаем matview
CREATE MATERIALIZED VIEW IF NOT EXISTS
HistoryValuesMV TO historyvalues
AS SELECT toInt64(b.idtag) as IdTag
, b.valueFloat as valueFloat
, b.valueString as valueString
, b.timestamp as timestamp
, now() as timestampWT
from (select a.idtag
, (data.1) as valueFloat
, (data.2) as valueString
, fromUnixTimestamp64Milli((data.3),'UTC') as timestamp
from
(select _key as idtag
, JSONExtract(value||']','Array(Tuple(VF Nullable(Float64),VS Nullable(String),TS Int64))') as data
from queue) a
array join a.data as data) b;

Данные не идут, нигде никаких ошибок не вижу. Если делать вставку
insert into historyvalues select ... (запрос идентичный MV)
то данные вставляются.

Где искать проблему? Куда, в какие логи смотреть?

21 ответов

16 просмотров

выставить логи как Trace рестартануть сервер и искать что происходит через tail -f /var/log/clickhouse-server/clickhouse-server.log | grep -i kafka данные не идут в MV потому что скорее всего не попадают в ENGINE = Kafka туда они могут не попадать по разным причинам может у вас топик кривой может формат сообщений в kafka не соответствует таблице (но об этом должны быть записи в логе) может доступа к брокеру нет (тоже должны быть логи)

Pavel-Vorontsov Автор вопроса
Slach [altinity]
выставить логи как Trace рестартануть сервер и иск...

Данные в ENGINE = Kafka идут, проверено. Более того, повторяю "Если делать вставку insert into historyvalues select ... (запрос идентичный MV) то данные вставляются." То есть запрос из MV прекрасно отрабатывает, данные из кафки вычитываются.

Pavel Vorontsov
Данные в ENGINE = Kafka идут, проверено. Более тог...

что то сомневаюсь что у вас запрос правильный (select_key as idtag точно не может быть правильным запросом

Pavel-Vorontsov Автор вопроса
Slach [altinity]
что то сомневаюсь что у вас запрос правильный (sel...

Почему? _key - виртуальная колонка, ключ сообщения в кафке

Pavel Vorontsov
Данные в ENGINE = Kafka идут, проверено. Более тог...

какая версия КХ ? поля в таблице тоже в таком регистре названы? IdTag ? сделайте таблицу temp ... Engine = Log , создайте еще одно mv на нее TO таже самая таблица и вставьте строку в этом же формате asstring в temp

Pavel-Vorontsov Автор вопроса
Denny [Altinity]
какая версия КХ ? поля в таблице тоже в таком рег...

ClickHouse server version 20.12.3 да, все регистры такие. Сейчас попробую с temp

Pavel-Vorontsov Автор вопроса
Denny [Altinity]
какая версия КХ ? поля в таблице тоже в таком рег...

Всё прекрасно вставилось из temp :) insert into temp values ('1010101010','[{"VS":47879,"TS":1614320449000,"Q":192},{"VS":0.2,"TS":1614320449001,"Q":192}') INSERT INTO temp VALUES Query id: 0368e959-d6ab-4147-ab2f-4ad2ea4fdeb0 Ok. 1 rows in set. Elapsed: 0.034 sec. :) select * from historyvalues where IdTag = 1010101010; SELECT * FROM historyvalues WHERE IdTag = 1010101010 Query id: 0ef1cd00-f757-493e-8b8d-aaa919a26534 ┌──────IdTag─┬─valueFloat─┬─valueString─┬─valueDateTime─┬───────────────timestamp─┬─────────────timestampWT─┬─quality─┐ │ 1010101010 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 2021-02-26 06:20:49.000 │ 2021-02-26 06:22:11.000 │ 192 │ │ 1010101010 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 2021-02-26 06:20:49.001 │ 2021-02-26 06:22:11.000 │ 192 │ └────────────┴────────────┴─────────────┴───────────────┴─────────────────────────┴─────────────────────────┴─────────┘ текст MV отличчается только заменой queue -> temp

Pavel Vorontsov
Всё прекрасно вставилось из temp :) insert into te...

Как вариант попробуйте создать mv без TO, а потом селектнуть напрямую из mv (на самом деле из его скрытой таблицы). Пробовали селект делать из таблицы с engine=Kafka? Причём такой какой пишите в mv и просто select *

Pavel-Vorontsov Автор вопроса
Vik Kin
Как вариант попробуйте создать mv без TO, а потом ...

Это первое, что мы попробовали. Из начального сообщения "Если делать вставку insert into historyvalues select ... (запрос идентичный MV) то данные вставляются."

Pavel Vorontsov
Это первое, что мы попробовали. Из начального сооб...

Тогда думаю надо копать в сторону настроек сервера. Там есть периодичность вычитывания из кафки и размер блока, при котором происходит вычитывание даже если тайм-аут ещё не пришёл

Vik Kin
Тогда думаю надо копать в сторону настроек сервера...

у них в Kafka Таблицу все нормально читается у них по какой то причине у MV не попадает MV там не Kafka таблица... а обычный MergeTree что и странно

Slach [altinity]
у них в Kafka Таблицу все нормально читается у них...

mv это просто триггер на инсерт, инициатор как раз таки таблица с кафкой, а чтение из неё автоматом (а следовательно и триггер) происходит согласно двум параметрам, про которые я написал. Если просто создать кафка таблицу, то такого автоматического чтения не будет

Slach [altinity]
у них в Kafka Таблицу все нормально читается у них...

Проверить очень просто - если есть mv, то селект напрямую из кафки будет возвращать прерывистые данные относительно того что в топике, без mv вы будете всегда получать весь поток данных (все потому, что из кафки можно прочитать одни и те же данные только один раз)

Pavel-Vorontsov Автор вопроса
Vik Kin
mv это просто триггер на инсерт, инициатор как раз...

В том то и фишка, что триггер вроде как не срабатывает. Непонятно почему. И сообщений о проблемах никаких

Pavel Vorontsov
В том то и фишка, что триггер вроде как не срабаты...

Поднимите в докере КХ той же версии с чистым конфигом и попробуйте вашу схему, можно ещё с другой версией проверить

Vik Kin
Тогда думаю надо копать в сторону настроек сервера...

а точнее можете сказать? честно говоря не понимаю про какие параметры вы говорите

Slach [altinity]
а точнее можете сказать? честно говоря не понимаю ...

"To improve performance, received messages are grouped into blocks the size of max_insert_block_size. If the block wasn’t formed within stream_flush_interval_ms milliseconds, the data will be flushed to the table regardless of the completeness of the block."

Vik Kin
Тогда думаю надо копать в сторону настроек сервера...

кстати да min_insert_block_size посмотрите и stream_flush_interval_ms SELECT * FROM system.settings WHERE name LIKE '%block_size%' OR name LIKE '%flush%' FORMAT Vertical;

Slach [altinity]
кстати да min_insert_block_size посмотрите и stre...

Там если случайно задрать stream_flush_interval_ms то можно и не дождаться данных, если поток в топик не очень большой

Pavel Vorontsov
Всё прекрасно вставилось из temp :) insert into te...

у вас уровень логирования trace? В логе должны быть сообщения про пулл-комит кафки

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта