Size: a a a

ClickHouse не тормозит

2021 February 25

Н

Николай in ClickHouse не тормозит
коллеги, подскажите, а какая версия клика сейчас постабильнее?
источник

IS

Illia Slobozhanin in ClickHouse не тормозит
Николай
коллеги, подскажите, а какая версия клика сейчас постабильнее?
Вроде как 20.8.13.15  с пометкой lts сейчас. Уже есть 20.11 (или 12 уже)
источник

DT

Dmitry Titov in ClickHouse не тормозит
Николай
коллеги, подскажите, а какая версия клика сейчас постабильнее?
20.8 сейчас, скоро будет признана 21.1 как альнити стейбл, а 21.3 будет следующей лтс от Яндекса, но на данный момент она имеет баги
источник

Н

Николай in ClickHouse не тормозит
альнити стейбл - это что? не сталкивался с таким термином
источник

DT

Dmitry Titov in ClickHouse не тормозит
Николай
альнити стейбл - это что? не сталкивался с таким термином
Ну Яндекс достаточно быстро клепает новые версии(каждый месяц) и вешает на них ярлык стейбл. Альтини стейбл это просто релизы которые уже чутка отлежались и критичные с нашей точки зрения баги для продакшена пофикшены. Их мы так же рекомендуем нашим клиентам.
источник
2021 February 26

PV

Pavel Vorontsov in ClickHouse не тормозит
Коллеги, извините, повторяю вопрос, ибо актуально

Кратко: Создаем 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)
то данные вставляются.

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

S

Slach in ClickHouse не тормозит
Pavel Vorontsov
Коллеги, извините, повторяю вопрос, ибо актуально

Кратко: Создаем 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)
то данные вставляются.

Где искать проблему? Куда, в какие логи смотреть?
выставить логи как Trace
рестартануть сервер
и искать что происходит через tail -f /var/log/clickhouse-server/clickhouse-server.log | grep -i kafka

данные не идут в MV
потому что скорее всего не попадают в ENGINE = Kafka
туда они могут не попадать по разным причинам
может у вас топик кривой
может формат сообщений в kafka не соответствует таблице (но об этом должны быть записи в логе)
может доступа к брокеру нет (тоже должны быть логи)
источник

PV

Pavel Vorontsov in ClickHouse не тормозит
Slach
выставить логи как Trace
рестартануть сервер
и искать что происходит через tail -f /var/log/clickhouse-server/clickhouse-server.log | grep -i kafka

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

S

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

PV

Pavel Vorontsov in ClickHouse не тормозит
Slach
что то сомневаюсь что у вас запрос правильный
(select_key as idtag
точно не может быть правильным запросом
Почему? _key - виртуальная колонка, ключ сообщения в кафке
источник

S

Slach in ClickHouse не тормозит
Дак пробела нет
SELECT _key
тогда уж
источник

S

Slach in ClickHouse не тормозит
а не
источник

S

Slach in ClickHouse не тормозит
есть
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Pavel Vorontsov
Данные в ENGINE = Kafka идут, проверено. Более того, повторяю "Если делать вставку
insert into historyvalues select ... (запрос идентичный MV)
то данные вставляются." То есть запрос из MV прекрасно отрабатывает, данные из кафки вычитываются.
какая версия КХ ?
поля в таблице тоже в таком регистре названы? IdTag ?
сделайте таблицу temp ... Engine = Log , создайте еще одно mv на нее TO таже самая таблица и вставьте строку в этом же формате asstring в  temp
источник

PV

Pavel Vorontsov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
какая версия КХ ?
поля в таблице тоже в таком регистре названы? IdTag ?
сделайте таблицу temp ... Engine = Log , создайте еще одно mv на нее TO таже самая таблица и вставьте строку в этом же формате asstring в  temp
ClickHouse server version 20.12.3
да, все регистры такие.
Сейчас попробую с temp
источник

T

T in ClickHouse не тормозит
всем привет, в кх есть возможность узнать кардинальность колонки?
источник

PV

Pavel Vorontsov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
какая версия КХ ?
поля в таблице тоже в таком регистре названы? IdTag ?
сделайте таблицу temp ... Engine = Log , создайте еще одно mv на нее TO таже самая таблица и вставьте строку в этом же формате asstring в  temp
Всё прекрасно вставилось из 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
источник

В

Виктор in ClickHouse не тормозит
Pavel Vorontsov
Всё прекрасно вставилось из 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
Как вариант попробуйте создать mv без TO, а потом селектнуть напрямую из mv (на самом деле из его скрытой таблицы). Пробовали селект делать из таблицы с engine=Kafka? Причём такой какой пишите в mv и просто select *
источник

PV

Pavel Vorontsov in ClickHouse не тормозит
Виктор
Как вариант попробуйте создать mv без TO, а потом селектнуть напрямую из mv (на самом деле из его скрытой таблицы). Пробовали селект делать из таблицы с engine=Kafka? Причём такой какой пишите в mv и просто select *
Это первое, что мы попробовали. Из начального сообщения "Если делать вставку
insert into historyvalues select ... (запрос идентичный MV)
то данные вставляются."
источник

В

Виктор in ClickHouse не тормозит
Pavel Vorontsov
Это первое, что мы попробовали. Из начального сообщения "Если делать вставку
insert into historyvalues select ... (запрос идентичный MV)
то данные вставляются."
Тогда думаю надо копать в сторону настроек сервера. Там есть периодичность вычитывания из кафки и размер блока, при котором происходит вычитывание даже если тайм-аут ещё не пришёл
источник