Size: a a a

ClickHouse не тормозит

2020 August 13

S

Slach in ClickHouse не тормозит
vitakor
а какой оптимальный сценарий добавления шарда при росте данных? заполнился диск, нужно добавить шард, что тогда будет ключем для шарда, рандом будет стучаться во все шарды... что-то этот момент для меня неясен... и что обычно используют для автоскейла?
решардинга из коробки нет
добавление шарда это добавление "набора пустых реплик"
вставлять через distributed таблицу медленнее
поэтому просто выбираете сервера какие вам надо и на них вставляете напрямую
выборка через distributed будет грузить на чтение те сервера на которых больше данных
источник

v

vitakor in ClickHouse не тормозит
Slach
решардинга из коробки нет
добавление шарда это добавление "набора пустых реплик"
вставлять через distributed таблицу медленнее
поэтому просто выбираете сервера какие вам надо и на них вставляете напрямую
выборка через distributed будет грузить на чтение те сервера на которых больше данных
вставлять напрямую, а читать через distributed ?
в этом случае ZooKeeper не нужен, если я не буду автоматом реплицировать?
источник

VP

Vasiliy Panshin in ClickHouse не тормозит
Всем привет. Столкнулся с оч непростой для меня задачей.

есть таблица, в которой имеем набор данных:
create table if not exists telemetry_common
(
   src_id UInt16,
   param String,
   param_date DateTime('Europe/Moscow')
)
engine = MergeTree() PARTITION BY toYYYYMM(param_date) ORDER BY (param_date, src_id) SETTINGS index_granularity = 8192;

в колонке param лежит json с данными вида (ключ это название какого-то параметра, а в значениях лежат вложенные категории с самими значениями):
{
   "a_zone_temperature": {
       "100": 318.0,
       "0": 270.0,
       "1": 74.0,
       "2": 462.0,
       "3": 341.0,
       "4": 490.0
   },
   "b_zone_temperature": {
       "0": 270.0,
       "1": 74.0,
       "2": 462.0,
   }
}

хочу выбрать данные за какой-то период по param_date с агрегацией: даунсемплить до часов и посчитать среднее значени по вложенным ключам.

это вообще возможно реализовать средствами клика?
голову сломал
источник

AR

Alexander Ryzhenko in ClickHouse не тормозит
Alexander Ryzhenko
Подскажите пожалуйста.
Пытаюсь сделать запрос insert into table select from mysql(...)
В мускуле порядка 40-50М Записей.
Получаю ошибку
Received exception from server (version 20.4.5):
Code: 306. DB::Exception: Received from XXX.XXX.XXX.XXX:9000. DB::Exception: Stack size too large. Stack address: 0x7f6c9ec18000, frame address: 0x7f6c9f0160d0, stack size: 4202288, maximum stack size: 8388608.
Query was cancelled.
С чем может быть связано? На другом сервере такой запрос выполнялся нормально (примерно за 200 сек)
Ответ нашелся. Спасибо поиску по чату.

Проблема была в том, что существует материалка из целевой таблицы в эту же таблицу.
источник

S

Slach in ClickHouse не тормозит
vitakor
вставлять напрямую, а читать через distributed ?
в этом случае ZooKeeper не нужен, если я не буду автоматом реплицировать?
"автоматом реплицировать" значит вставлять сразу паралельно в несколько серверов?
или имеется ввиду ReplicatedMergeTree?
второй вариант подразумевает что вставляете в один сервер
остальные докачивают вставленные данные обмениваясь названиями файлов с данными через Zookeeper
источник

v

vitakor in ClickHouse не тормозит
Slach
"автоматом реплицировать" значит вставлять сразу паралельно в несколько серверов?
или имеется ввиду ReplicatedMergeTree?
второй вариант подразумевает что вставляете в один сервер
остальные докачивают вставленные данные обмениваясь названиями файлов с данными через Zookeeper
да, имел ввиду ReplicatedMergeTree
понял... спасибо!
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
vitakor
а какой оптимальный сценарий добавления шарда при росте данных? заполнился диск, нужно добавить шард, что тогда будет ключем для шарда, рандом будет стучаться во все шарды... что-то этот момент для меня неясен... и что обычно используют для автоскейла?
По умолчанию кх стучится во все шарды, не важно какой шардинг ключ.
источник

S

Slach in ClickHouse не тормозит
Vasiliy Panshin
Всем привет. Столкнулся с оч непростой для меня задачей.

есть таблица, в которой имеем набор данных:
create table if not exists telemetry_common
(
   src_id UInt16,
   param String,
   param_date DateTime('Europe/Moscow')
)
engine = MergeTree() PARTITION BY toYYYYMM(param_date) ORDER BY (param_date, src_id) SETTINGS index_granularity = 8192;

в колонке param лежит json с данными вида (ключ это название какого-то параметра, а в значениях лежат вложенные категории с самими значениями):
{
   "a_zone_temperature": {
       "100": 318.0,
       "0": 270.0,
       "1": 74.0,
       "2": 462.0,
       "3": 341.0,
       "4": 490.0
   },
   "b_zone_temperature": {
       "0": 270.0,
       "1": 74.0,
       "2": 462.0,
   }
}

хочу выбрать данные за какой-то период по param_date с агрегацией: даунсемплить до часов и посчитать среднее значени по вложенным ключам.

это вообще возможно реализовать средствами клика?
голову сломал
источник

v

vitakor in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
По умолчанию кх стучится во все шарды, не важно какой шардинг ключ.
о! так норм... спасибо 🙂
источник

S

Slach in ClickHouse не тормозит
vitakor
о! так норм... спасибо 🙂
имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

при записи в Distributed
раскидывает по шардам в соответсвии с ключом шардирования
источник

v

vitakor in ClickHouse не тормозит
Slach
имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

при записи в Distributed
раскидывает по шардам в соответсвии с ключом шардирования
а 🙂
ну тоже неплохо... осталось придумать алгоритм выбора шарда для записи
источник

S

Slach in ClickHouse не тормозит
vitakor
а 🙂
ну тоже неплохо... осталось придумать алгоритм выбора шарда для записи
имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

при записи в Distributed
раскидывает по шардам в соответсвии с ключом шардирования
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg Majboroda
Добрый день! А кто-нибудь пытался сбилдить Кликхаус для AARCH64 на redhat?  Я следовал этой  инструкции https://clickhouse.tech/docs/en/development/build-cross-arm/ (с попправкой на redhat), но  на CC=clang-8 CXX=clang++-8 cmake . -Bbuild-arm64 -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-aarch64.cmake  падает :(
А вам надо бидлить самому? Кх ci собирает бинарники под arm
источник

v

vitakor in ClickHouse не тормозит
Slach
имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

при записи в Distributed
раскидывает по шардам в соответсвии с ключом шардирования
воот...так вот каким должен быть правильным ключ шардирования, если до этого писал только в один шард и он переполнился?
по дате, ID... ?
источник

S

Slach in ClickHouse не тормозит
vitakor
воот...так вот каким должен быть правильным ключ шардирования, если до этого писал только в один шард и он переполнился?
по дате, ID... ?
да сказали же никаким
берите и пишите напрямую в те сервера которые "новые"
в конфиге их задавайте
и пишите туда пачкой
каждую новую пачку в новый сервер
источник

v

vitakor in ClickHouse не тормозит
Slach
да сказали же никаким
берите и пишите напрямую в те сервера которые "новые"
в конфиге их задавайте
и пишите туда пачкой
каждую новую пачку в новый сервер
как-то каряво... должно ж быть коробочное решение... ситуация же вполне стандартная
источник

S

Slach in ClickHouse не тормозит
vitakor
как-то каряво... должно ж быть коробочное решение... ситуация же вполне стандартная
коробочное решение это ключ шардинга тогда по дате
источник

v

vitakor in ClickHouse не тормозит
Slach
коробочное решение это ключ шардинга тогда по дате
спасибо! пойду тестировать
источник

VP

Vasiliy Panshin in ClickHouse не тормозит
дело вот в чём. мне нужен запрос вида:
select toStartOfHour(param_date)                                               as hour,
      any((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature
from telemetry_common
where param_date > today()
 and src_id = 125
group by hour
order by hour desc;


но any заменить на avg

вот пример того, что возвращает запрос выше:
2020-08-13 14:00:00,"[('3',100),('4',103),('100',102),('0',98),('1',81),('2',95)]"
2020-08-13 13:00:00,"[('3',102),('4',80),('100',86),('0',109),('1',99),('2',101)]"
2020-08-13 12:00:00,"[('3',91),('4',83),('100',80),('0',101),('1',86),('2',83)]"
2020-08-13 11:00:00,"[('3',110),('4',98),('100',101),('0',110),('1',96),('2',84)]"
2020-08-13 10:00:00,"[('3',96),('4',80),('100',100),('0',110),('1',87),('2',107)]"
2020-08-13 09:00:00,"[('3',92),('4',105),('100',96),('0',83),('1',108),('2',93)]"
2020-08-13 08:00:00,"[('3',108),('4',95),('100',98),('0',93),('1',87),('2',82)]"


как для каждого тупла посчитать среднее?
источник

A

Alex in ClickHouse не тормозит
Добрый день, подскажите пожалуйста, как откорректировать синтаксис запроса

select * FROM table1
any left join table2 using (column1)
any left join table3 using (column2)

чтобы он не приводил к ошибке DB::Exception: Multiple CROSS/COMMA JOIN do not support USING (version 20.3.10.75)?
с самими таблицами все ок, по одной джойнятся без проблем (((
источник