@clickhouse_ru

Страница 663 из 723
Michal
19.09.2018
09:07:55
Что-нибудь похожее на ваши данные погенерить из numbers() и rand?

И какой-то минимальный пример?

Evgeny
19.09.2018
09:28:27
@milovidov_an добрый день можно поинтересоваться, в случае, если будет реализована новая полезная функция в виде pull request, то каков примерный срок вхождения ее в релиз?

Google
Алексей
19.09.2018
09:29:55
@milovidov_an добрый день можно поинтересоваться, в случае, если будет реализована новая полезная функция в виде pull request, то каков примерный срок вхождения ее в релиз?
на своем опыте - я сделал бесполезную функцию, Алексей ее сразу интегрировал ( до релиза прошло 2 недели или около того). За что огромное спасибо, так как не надо возиться со своей сборкой

Evgeny
19.09.2018
09:30:16
понятно, спасибо

Ivan
19.09.2018
09:32:55
@milovidov_an добрый день можно поинтересоваться, в случае, если будет реализована новая полезная функция в виде pull request, то каков примерный срок вхождения ее в релиз?
да, небольшое обычно редко висит на ревью дольше единиц дней или недель, но на нетривиальные патчи может уходить непредсказуемо много времени в зависимости объема, сложности и качества кода

Evgeny
19.09.2018
09:33:24
понятно

Светлана
19.09.2018
10:16:07
скорее всего arrayJoin сильно увеличивает расход памяти
Но тот же самый запрос с тем же самым arrayJoin и группировкой в памяти, а не чтением из таблицы с заранее сгруппированными данными, отрабатывает с меньшим потреблением памяти и не падает.

Irina
19.09.2018
11:16:13
Привет, мне сказали, что тут есть люди, которые умеют селектить, а не как я.

есть пользователи, они иногда приходят. Есть retention недельный. Для дня Х мы хотим посчитать следующую чиселку: уники, который пришли в диапазоне (Х-2 недели, Х-неделя) и еще раз пришли в (Х-неделя,Х). Вроде всё просто

а теперь хочется селект, который для последний 14 дней будет выдавать эту чиселку

Irina
19.09.2018
11:27:08
Это самых похожие слова, что я нашла в документации

Google
Эмин
19.09.2018
11:52:09
Ребята, посоветуйте хорошие, полезные статьи по Catboost?

Denis
19.09.2018
11:52:26
Но тот же самый запрос с тем же самым arrayJoin и группировкой в памяти, а не чтением из таблицы с заранее сгруппированными данными, отрабатывает с меньшим потреблением памяти и не падает.
Могу предположить такой сценарий: у кх где-нибудь есть параметр - сколько записей читать одним блоком. Примем за 100. Приходит полный запрос, читает блок 100 записей, получает из них условно 10 строчек с массивами по 10. От них считает математику, кушая 100*0,2% доступной памяти. Параллельно ещё 3 процессора работают, всего 80% памяти съедено. Ситуация 2. Приходит запрос на создание промежуточной таблицы. Берёт 100 записей, группирует, пишет 10 строчек с массивами по 10 за каждый обработанный блок. Приходит 2й запрос на сложную математику, читает 100 строчек, но теперь каждая строчка - это уже массив из 10 элементов. И в памяти такой блок занимает не 100*0,2%, а 1000*0,2%. ООМ. пс. это всего лишь предположение, реального сценария не знаю.

molo4ko
19.09.2018
11:54:18
как-то можно сделать distributed join двух таблиц (с одинаковым ключом шардирования) как будто в режиме local? select a,b from (select a from tableA where foo=bar all inner join (select b from tableB where x = y) using id)

я помню, что можно было просто указывать имя локальной таблицы во вложенном запросе, но, кажется, это только если tableA == tableB

Алексей
19.09.2018
12:13:17
Ошибка «Attempt to attach to nullptr thread group» при <Error> DDLWorker: Query CREATE MATERIALIZED VIEW - известная проблема или нет?

Alexey
19.09.2018
12:18:33
У меня такая же ошибка при create table engine = memory on cluster

Alexey
19.09.2018
12:26:17
и что делать?
не знаю, дождаться ответа разработчиков или issue сделать, например

Алексей
19.09.2018
12:26:53
не знаю, дождаться ответа разработчиков или issue сделать, например
https://github.com/yandex/ClickHouse/issues/3173 - добавь пожалуйста свои данные может ускорится

Michal
19.09.2018
12:32:49
а теперь хочется селект, который для последний 14 дней будет выдавать эту чиселку
SELECT user, countIf( date between today()-6 and today() ) as has_action_in_last_7_days, countIf( date between today()-13 and today()-7 ) as has_action_in_previous_7_days from table where date between today()-13 and today() group by user having has_action_in_last_7_days>1 and has_action_in_previous_7_days>1

Ivan
19.09.2018
12:33:10
Это самых похожие слова, что я нашла в документации
В общем, не уверен, что правильно понял что тебе нужно, но кажется что-то типа того: https://gist.github.com/blinkov/a415e5c9d6dcc373a5eb1e1e37b34bd5

Michal
19.09.2018
12:35:05
Но понять просто

Кстати если данных не очень много то можно просто sequenceMatch написать https://clickhouse.yandex/docs/en/query_language/agg_functions/parametric_functions/#sequencematchpatterntime-cond1-cond2 или windowFunnel

Irina
19.09.2018
12:40:24
Так да, за день я могу, мне надо график рисовать. Вот про окна очень не хватает какие-то примеров похожего толка. Но кажется, будет многовато, это ретеншн всего сервиса

Dmitry
19.09.2018
12:52:40
Всем привет! Описываю конфиг внешнего словаря, там нужно указать null_value для атрибута. Какой валидный null_value для DateTime? Такой вариант падает с ошибкой: <attribute> <name>start_time</name> <type>DateTime</type> <null_value>NULL</null_value> </attribute> .

Google
molo4ko
19.09.2018
12:56:37
https://clickhouse.yandex/docs/ru/operations/settings/settings/#distributed_product_mode ?
select a, b from tableA all inner join ( SELECT b FROM tableB ) USING id без установки d_p_m Double-distributed IN/JOIN subqueries is denied (distributed_product_mode = 'deny’) d_p_m=local Table default.tableB_replicated doesn't exist., e.what() = DB::Exception (потому что b_local в бд shard_0, а не в default) d_p_m=allow DB::Exception: Table shard_0.tableB doesn't exist.., e.what() = DB::Exception (непонятно, почему) d_p_m=global работает

вероятно, d_p_m не слишком хорошо дружит с перекрестной репликацией/шардингом? у кого-то есть опыт?

Denis
19.09.2018
13:06:52
вероятно, d_p_m не слишком хорошо дружит с перекрестной репликацией/шардингом? у кого-то есть опыт?
что-то странное вы делаете что будет если джойнить с шардом tableB, зачем там дистрибьютид? по моему вы этого хотите select a,b from (select a from tableA where foo=bar all inner join (select b from *tableB_SHARD* where x = y) using id)

molo4ko
19.09.2018
13:09:43
а как это работает?

это же при dpm=local?

Danil
19.09.2018
13:10:40
Всем доброго дня. На многих вебинарах встречаю фразу, что нельзя в клик сваливать джисонки и растаскивать их по вьюхам, но нигде не нашел объяснения почему. Может кто-то знает или даст ссылку почитать?

Denis
19.09.2018
13:11:07
это же при dpm=local?
dpm тут вообще ни к селу кмк, это полиси.

Denis
19.09.2018
13:12:17
это сделано для скорости, там нет нормального парсера, потому что это будет очень тормозить, json плохой формат.

molo4ko
19.09.2018
13:15:38
dpm тут вообще ни к селу кмк, это полиси.
а что тогда это значит? >tableB_SHARD есть бд default c tableA/tableB, которые смотрят на tableA_replicated/tableB_replicated на разных машинах, как можно шард указать?

Danil
19.09.2018
13:15:46
потому что КХ парсит свой формат json и на очень базовом уровне, например нельзя лишние проблелы
Не совсем понял. Если у меня в клике запись json = {"id":1, "var1": "value", "var2":"value"}, то ее же можно разобрать через visitParamExtractUInt(json,'id'). То есть тут вопрос не столько в формате, сколько в скорости? То есть хочу понять в какой момент проблемы всплывут

Andrey
19.09.2018
13:16:41
Disk sdb read requests merge per second - подскажите, что физически означает эта метрика?:

Denis
19.09.2018
13:18:20
LeiDruid
19.09.2018
13:20:15
А как посмотреть, куда клик заныкал RES память ?

В system.processes как-то маловато

ну гиг там, суммарно

Alex
19.09.2018
13:20:35
Привет, коллеги. Такой вопрос. Сопоставима ли скорость кликхаус memory движок со скоростью чтения тем же редисом?

LeiDruid
19.09.2018
13:20:37
Но не 60 же

Kirill
19.09.2018
13:21:46
Не совсем понял. Если у меня в клике запись json = {"id":1, "var1": "value", "var2":"value"}, то ее же можно разобрать через visitParamExtractUInt(json,'id'). То есть тут вопрос не столько в формате, сколько в скорости? То есть хочу понять в какой момент проблемы всплывут
Самая тут большая проблема в том, что для того чтоб достать вам эту строку он прочитает еще кучу которые рядом и хранить в КХ что-то не фиксированной длины (плюс/минус) - это сильно не оправдано. Ну и о том что JSON поддерживается достаточно базово уже сказали

Google
Stanislav
19.09.2018
13:23:21


Вот как мне посмотреть, что там происходит до того, как сервер click2 упадёт по oom?

LeiDruid
19.09.2018
13:25:29
Вот как мне посмотреть, что там происходит до того, как сервер click2 упадёт по oom?
Вот и у меня аналогичный вопрос, потому как всякие system.processes и system.merges я уже просуммировал - не сходится даже приблизительно

Stanislav
19.09.2018
13:26:06
Аналогично, причём на click2 в момент проверки работало два запроса: insert от telegraf на том же сервере и мой.

Danil
19.09.2018
13:27:16
Самая тут большая проблема в том, что для того чтоб достать вам эту строку он прочитает еще кучу которые рядом и хранить в КХ что-то не фиксированной длины (плюс/минус) - это сильно не оправдано. Ну и о том что JSON поддерживается достаточно базово уже сказали
Я правильно понимаю логику работы клика? У меня есть таблица, куда валятся джисонки, и отдельно материалайзд вью которая "распарсивает" таблицу. Каждый раз, когда будет прилетать джисонка новая, КХ, чтобы добавить новые данные во вьюху, будет доставать ближайшие Н-тысяч джисонок и распарсивать их?

Vasilij
19.09.2018
13:30:25
Всем доброго дня. На многих вебинарах встречаю фразу, что нельзя в клик сваливать джисонки и растаскивать их по вьюхам, но нигде не нашел объяснения почему. Может кто-то знает или даст ссылку почитать?
Мы сейчас делаем так: из таблицы с движком mySQL выбираем в таблицу с движком Memory пачку событий (у нас такая, довольно примитивная, очередь), распарсивая при этом json данные события. И уже из таблицы с распарсенными данными, запросами INSERT INTO ... SELECT ... раскладываем куда надо. Проблем с json пока не было, видимо у нас подходящий для Clickhouse формат :)

Denis
19.09.2018
13:37:32
А как посмотреть, куда клик заныкал RES память ?
на мержи и словари может легко, смотрится в соотвествующих system. таблицах плюс кеш марков, плюс кеш распакованных

terry
19.09.2018
13:42:24
добрый день тупой вопрос есть инструмент, который показывает в реалтайме обновление таблицы c данными?

Danil
19.09.2018
13:43:52
@Vasyaabr @den_crane @kshvakov спасибо!

terry
19.09.2018
13:44:10
@borys_yermokhin https://t.me/clickhouse_ru/66275

clickhouse-client + SQL + watch ?
вопрос не мой, поэтому я тегнул автора, за ответ спасибо :D

Светлана
19.09.2018
13:45:09
А можете попробовать сделать какой-то воспроизводимый пример?
Оказалось, что в запросах потерян ордеринг по дате, с ним и первый запрос падает по памяти:) Без ордеринга такие запросы не имеют смысла, но просто чтобы воспроизвести ситуацию, сделала совсем простой вариант - без ордера и только с одним типом ивентов. На нём можно увидеть, что есть разница по памяти. https://gist.github.com/svpetrova/b82880ceeba395d0ffa26356d78bd84b

Александр
19.09.2018
13:49:51
А как себя поведет КХ если я вставляю блок данных из разных партиций, но ДО лимита в 1 млн строк (что бы данные одним блоком отправились с клиента) и вот возникла ошибка во время вставки, либо вставка была прервана, то данные запишутся частично или нет? Просто у меня сейчас подозрение, что если данные из разных партиций, то он частично пишет данные. Т.е. я отправляю запрос на инсерт большого куска данных ДО 1 млн строк и у меня как-то каждую секунду увеличивается количество строк в таблице (пишу в один поток).

LeiDruid
19.09.2018
13:50:22
Как проверить остальное

?

Google
Александр
19.09.2018
13:50:33
Хотя по идее оно должно вставить разом, т.е. пишу 500 000 строк из 10 партиций, то оно по окончанию вставки должно сразу показать + 500 000 строк, а не кусочками?

Александр
19.09.2018
13:52:39
Не, мы через clickhouse-client пишем данные

Типа cat file | clickhouse-client -q 'insert into ...'

Kirill
19.09.2018
14:05:32
Надо вот тут покопаться https://github.com/yandex/ClickHouse/blob/db13ef96d62ce739c3e666deaa042c9bfda61b1a/dbms/programs/client/Client.cpp#L960 (insert_format_max_block_size - по дефолту 1048576, но есть подозрение что он не будет его копить, а будет чаще блоки скидывать)

Александр
19.09.2018
14:12:44
не запишутся полностью (точнее у меня записываются на проде при out of memory, но воспроизвести на стейдже и оформить баг я не смог и скорее всего это моя очень специфичная проблема)
Просто у нас трабл. Мы ставим клиенту настройку с размером блока в кол-во строк которое хотим записать. Улетает команда на запись данных и я по несколько раз в секунду делаю select count() from table и вижу как кол-во строк меняется.

Причем постоянно

Alexey
19.09.2018
14:13:14
Ошибка «Attempt to attach to nullptr thread group» при <Error> DDLWorker: Query CREATE MATERIALIZED VIEW - известная проблема или нет?
Пока ещё нет, но выглядит знакомо. Скорее всего будет несложно исправить.

Я думаю, что это связано с наличием в таблице "толстых" строк (длинных массивов) и достаточно большим index_granularity по-умолчанию. Наверное стоит указать в таблице с временными данными поменьше index_granularity. Например, 64.

Ivan
19.09.2018
14:15:24
Всем привет. Есть какая-то альтернатива aioch ( постлянно выхватываю ошибку https://github.com/mymarilyn/aioch/issues/2), кроме aiohttp клиента ?

Yaroslav
19.09.2018
14:15:32
Коллеги, есть кластер два шарда по две реплики. Шардирование и репликация через zookeeper. Страшен ли clickhous`у split brain реплик в каждом шарде в случае когда данные льются постоянно на обе реплики, а связь между репликами оборвалась? Или после восстановления связи просто все безболезнено синхронизируется? Есть ли у zookeeper`а какие-то общие данные, которые могут поломаться в таком случае?

Denis
19.09.2018
14:18:55
Просто у нас трабл. Мы ставим клиенту настройку с размером блока в кол-во строк которое хотим записать. Улетает команда на запись данных и я по несколько раз в секунду делаю select count() from table и вижу как кол-во строк меняется.
типа видно незакончившийся insert ? что-то значит неправильно сделано у вас, у вас точно один insert ? create table p(a Int64, b Int64) engine=MergeTree partition by a%2 order by tuple(); insert into p select number,throwIf(number=999998) from numbers(1000000); select * from p; 0 rows in set. Elapsed: 0.001 sec.

Страница 663 из 723