@clickhouse_ru

Страница 709 из 723
Kirill
18.10.2018
11:25:40
как там может получиться один запрос не могу понять
Там при Prepare на сервер отсылвется INSERT INTO T VALUES, сервер отвечает какие колонки и какого типа нужно вставлять, Exec пишет в буфер, Commit отправляет блок данных на сервер

Andrey
18.10.2018
11:25:59
спасибо!

Vladislav
18.10.2018
11:29:31
Спасибо. И правильно ли я вообще делаю - задача глобальная - забирать данные из kafka. Подняты cluster kafka - 3 сервера, топик с 3 партициями создан кластер clickhouse - 3 сервера, созданы по таблице kafka_engine на каждой ноде (kafka_num_consumers=1). Теперь хочу создать на каждой ноде по materialized view чтобы она уже сама забирала в DISTRIBUTED TABLE и там равномерно раскидывалось

Google
Vladislav
18.10.2018
11:33:52
Неправильно. Кафка енжин сам забирает равномерно. Ничего этого не надо
Не совсем понял. Т.е. не нужно в distributed table скидывать, а можно сразу в локальную на каждой ноде? Или не нужно на каждой ноде по kafka_engine?

Denis
18.10.2018
11:35:33
не нужна Вам дистрибьютид

Артем
18.10.2018
11:48:57
кто нибудь может подсказать, есть простой запрос SELECT CLIEN_ID, CASE count(PURCHASE_ID) WHEN 1 THEN any(PURCHASE_ID) ELSE 'MORE ONE PURCHASE' END AS PURCHASES FROM PURCHASES GROUP BY CLIEN_ID; он должен вернуть ID  покупки или строку, но в данном случае получается ошибка Code: 44, e.displayText() = DB::Exception: Argument at index 2 for function transform must be constant, e.what() = DB::Exception

papa
18.10.2018
11:54:40
видимо case в этом случае транслируется в transform в котором агрументы должны быть константами. можно переписать через if, которму должно быть все равно.

Roman
18.10.2018
11:55:48
count() cnt, multiIf( cnt = 0, '0', cnt = 1, toString(any(PURCHASE_ID)), 'MORE THAN ONE PURCHASE' )

Илья
18.10.2018
12:28:43
подскажите, есть у кого опыт получения данных в KNIME из ClickHouse? у нас коллеги утверждают, что не смогли завести по jdbc. Может есть у кого опыт? сам, к сожалению, с KNIME не работал

Владимир
18.10.2018
12:32:01
Пытаюсь использовать новый функционал (ALTER TABLE ... UPDATE) c multiIf(), на тестовых прогонах на малом объёме данных и условий в multiIf всё ок, однако при попытке запустить на реальных данных ловлю ошибку. Количество условий в multiIf около 4к, объём данных для которых применяется update около 10м, ошибка "AST is too big. Maximum: 50000 IN". Не слишком понятно, в чём ошибка - нужно уменьшить кол-во условий, или применять к меньшему набору данных?

Запрос вида UPDATE field = multiIf(cond, value, ....) WHERE .... При этом condition может быть составным, вида field2 = N AND field3 IN (A, B, C, ....)

Григорий
18.10.2018
12:33:36
Подскажите, как быстро удалить базу/таблицу, если она в r/o? Кластер ЗК поломал

Wolf
18.10.2018
12:37:45
Остановить кх и грохнуть данные и мета на диске

Google
Владимир
18.10.2018
12:39:32
max_ast_elements это настройка сервера?

Denis
18.10.2018
12:40:46
нет, но вам для alter наверное стоит изменить у всего сервера, alter же хитро и не в текущей сессии асинхронно выполняется.

Владимир
18.10.2018
12:41:29
Как я понимаю, она учитывает не количество cond в multiIf, а количество елементов, входящих во все cond?

Denis
18.10.2018
12:42:03
Владимир
18.10.2018
12:44:00
т.е. я могу считать условия в процессе построения запроса, чтобы разбить его на N меньших

Denis
18.10.2018
12:47:06
т.е. я могу считать условия в процессе построения запроса, чтобы разбить его на N меньших
можете, еще можете словарь сделать который будет возвращать 1 если id передан правильный multiIf(getDictInt8(mynewdict, mytrue, ), , ....)

Konstantin
18.10.2018
14:55:13
ReplicatedSummingMergeTree - будет поддерживать произвольный ключ партиционирования?

Denis
18.10.2018
14:59:01
все MergeTree поддерживают произвольный ключ партиционирования, и начали поддерживать одновременно, год назад.

Konstantin
18.10.2018
15:02:47
Мда, дока устарела и тут только одну таблицу тестируют https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00502_custom_partitioning_replicated_zookeeper.sql

Kirill
18.10.2018
15:04:00
Мда, дока устарела и тут только одну таблицу тестируют https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00502_custom_partitioning_replicated_zookeeper.sql
Не устарела, просто все фичи MergeTree распространяются на все семейство (об этом тоже в доке где-то есть). В них разница очень небольшая

Konstantin
18.10.2018
15:37:45
где то встречал, да. в новом формате создания таблиц ключ семплирования должен быть в первичном ключе. раньше не требовал

Дмитрий
18.10.2018
15:46:06
Добрый вечер! Может кто-нибудь объяснить такое поведение: SELECT uniqExact(id) FROM ad_stats WHERE id IN ( SELECT id FROM ad_actions WHERE action = 'click' ) ┌─uniqExact(id)─┐ │ 10 │ └───────────────┘ т.е. 10 id из ad_actions имеются и в ad_stats. Теперь по другому: SELECT uniqExact(id) FROM ad_actions ANY INNER JOIN ad_stats USING (id) WHERE action = 'click' ┌─uniqExact(id)─┐ │ 10 │ └───────────────┘ Пока все нормально. А теперь поменяем таблицы местами: SELECT uniqExact(id) FROM ad_stats ANY INNER JOIN ad_actions USING (id) WHERE action = 'click' ┌─uniqExact(id)─┐ │ 0 │ └───────────────┘ НОЛЬ!!! Как это??? И это не связано с тем, что action есть только в правой таблице. Потому что с WHERE action = 'view' в том же варианте джойна оно работает.

papa
18.10.2018
15:50:27
к каждой строке из ad_stats подцепляется по id нечто из ad_actions. так получается что ни один из них не click

например потому что view случается раньше.

для симметрии, и для похожести на стандартный sql надо использовать all inner

Дмитрий
18.10.2018
15:52:43
к каждой строке из ad_stats подцепляется по id нечто из ad_actions. так получается что ни один из них не click
ну вы на первый запрос внимательно посмотрите. На условие подзапроса

ааа.... я мысль вашу понял

типа оно сперва джойнит абы что, а потом отфильтровывает все по where?

papa
18.10.2018
15:54:49
да, any обычно так себя ведет.

Google
Alexey
18.10.2018
15:54:52
типа оно сперва джойнит абы что, а потом отфильтровывает все по where?
ANY или ALL - строгость: Если указано ANY, то при наличии в "правой" таблице нескольких соответствующих строк, будет присоединена только первая попавшаяся. Если указано ALL, то при наличии в "правой" таблице нескольких соответствующих строк, данные будут размножены по количеству этих строк.

Дмитрий
18.10.2018
15:55:53
ясно. Вообще не очевидно. Спасибо

Alexey
18.10.2018
15:56:27
ясно. Вообще не очевидно. Спасибо
это из доки https://clickhouse.yandex/docs/ru/query_language/select/#join

Дмитрий
18.10.2018
15:57:35
я читал. Просто вот как папа карло объяснил на мой мозг лучше легло ))

Vladislav
18.10.2018
16:12:54
Вопрос по kafka+clickhouse. MATERIALIZED VIEW отправляет в таблицу данные пачками пока не наберет 100 000. Должно быть такое поведение? Можно ли уменьшить?

если быто точным ┌─count()─┐ │ 65536 │ └────-──┘

Denys
18.10.2018
16:19:35
мм разве пачками что то отправляет ?

Alex
18.10.2018
16:23:04
где то встречал, да. в новом формате создания таблиц ключ семплирования должен быть в первичном ключе. раньше не требовал
Это требование было всегда, но раньше оно проверялось только при выполнении запроса с SAMPLE, а теперь при создании таблицы.

Denis
18.10.2018
16:23:14
Вопрос по kafka+clickhouse. MATERIALIZED VIEW отправляет в таблицу данные пачками пока не наберет 100 000. Должно быть такое поведение? Можно ли уменьшить?
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. https://clickhouse.yandex/docs/en/operations/table_engines/kafka/ https://github.com/yandex/ClickHouse/pull/3396

я читал. Просто вот как папа карло объяснил на мой мозг лучше легло ))
можно сначала отфильтровать потом джойнить SELECT uniqExact(id) FROM ad_stats ANY INNER JOIN (select id ad_actions WHERE action = 'click') USING (id) такой вариант даже лучше наверное, потому что правая таблица (выборка) помещается в память, чтобы соединять hash-join

Дмитрий
18.10.2018
16:38:47
вариантов много, да. Я суть понять не мог

Denis
18.10.2018
16:41:28
ну да, sql сложный язык, редко кто понимает что ansi синтаксисе есть пре join и пост join предикаты, а если джойнить без ansi, в where, там вообще улет.

SELECT uniqExact(id) FROM ad_stats s JOIN ad_actions a ON (a.action = 'click' and a.id = s.id) КХ такое не умеет еще SELECT uniqExact(id) FROM ad_stats s JOIN ad_actions a ON (and a.id = s.id) where a.action = 'click' -- большинство бд догадываются что a.action = 'click' можно протолкнуть в пре джойн.

Alex
18.10.2018
18:44:12
Коллеги, пробую скопирнуть кластер при помощи clickhouse-copier. Исходный кластер версии 1.1.54198, новый - версии 18.14.8 revision 54409 падает с ошибкой DB::Exception: Unknown setting preferred_block_size_bytes. Есть вариант это обойти? Или делать даунгрейд нового кластера?

Sergey
18.10.2018
18:58:29
Если есть реплика , я бы попробовал upgrade с 1.1.54198 на что 18.14.8

Alex
18.10.2018
19:02:54
нету реплики, как раз собирался скопировать в новый кластер где все реплицируется

Sergey
18.10.2018
20:36:02
Не знаю как работает кх-копир, но предполагаю, что таблицы у вас должны быть из серии Replicated. И если они у вас на старом сервере без репликации, а на новом уже с реплицией , то может имеет смысл переносить данные через deattach/attach партиции, но опять хз как оно будет если у вас разные версии серверов.

Wolf
18.10.2018
20:43:06
На более высокие версии детач аттач должен без проблем проходить

Belchikov
18.10.2018
22:15:25
Добрый день! А можно ли создать external dictionary по view или materialized view? Если нет, то может ли словарь содержать вычисленное поле (без group by и join, только в пределах одной записи)?

Denis
18.10.2018
23:27:18
Добрый день! А можно ли создать external dictionary по view или materialized view? Если нет, то может ли словарь содержать вычисленное поле (без group by и join, только в пределах одной записи)?
ну MV это же обычная таблица, поэтому 100% но я думаю все три варианта будут работать. Словари поддерживают expression, поэтому там можно написать <expression>f0*f1+rand64()</expression> https://clickhouse.yandex/docs/en/query_language/dicts/external_dicts_dict_structure/ ну и можно прямо к таблице добавить вычисляемое поле как alias

Google
Alexey
19.10.2018
06:30:46
Выложена презентация с Субботника по базам данных в Екатеринбурге (который проходил в четверг). https://yandex.github.io/clickhouse-presentations/database_saturday_2018_2/pipeline/# Видеозаписи не было.

Timur
19.10.2018
06:56:23
Помогите пожалуйста с JDBC пробывал выставлять в опциях DS: socket_timeout dataTransferTimeout receive_timeout + пробывал через URL: ?socket_timeout=300000. Кверя ровно через 30 секунд падает в exception Caused by: ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 159, host: XXXXX, port: 8123; Read timed out Caused by: java.net.SocketTimeoutException: Read timed out

похоже сам дурак… не в том коннекторе опции правлю

да, все ок

Igor
19.10.2018
08:00:02
люди, есть два запрос, которые возвращают разный результат, есть у кого идеи почему ?

Wolf
19.10.2018
08:03:29
Ну без запросов никто не угадает, а так не проблема придумать запрос который будет возвращать разное

Darafei
19.10.2018
08:04:12
select 1; select 2;

Igor
19.10.2018
08:13:15
уже не актуально , запрос был такой SELECT * FROM default.events_v2_dist WHERE toDateTime((toUInt32(toUInt32(now()) / 3600) * 3600 - 10800)) = received_at AND dictGetUInt16('apps', 'user_role_id', toUInt64(app_id)) = 11 AND event_type = 100 SELECT * FROM default.events_v2_dist WHERE received_at =toDateTime((toUInt32(toUInt32(now()) / 3600) * 3600 - 10800)) AND dictGetUInt16('apps', 'user_role_id', toUInt64(app_id)) = 11 AND event_type = 100

а я его запускал просто при переходе через час, завтыкал кароч)

Гурам
19.10.2018
08:36:07
Для исследования нужно полное описание проблемы, чтобы можно было воспроизвести
Добрый день. Есть какой-нибудь ответ по данной проблеме?

Igor
19.10.2018
08:45:50
да,спс,уже нашел

Vladislav
19.10.2018
08:46:15
Доброго дня. Все пытаюсь подружить kafka и clickhouse и разобраться с параметрами max_insert_block_size, stream_flush_interval_ms и max_block_size. Симптомы такие - сlickhouse забирает из kafka данные, но данные в целевую таблицу через materialized view отправляются только при наборе 65536 строк. Это также хорошо видно и со стороны kafka, CONSUMER LAG на каждом из трех consumer достигает 65536. Но правильное ли это поведение? В документации сказано "Если блок не удалось сформировать за stream_flush_interval_ms миллисекунд, то данные будут сброшены в таблицу независимо от полноты блока.". Настройки все дефолтные, на всякий проверил так. stats-1 :) select * from system.settings where name='stream_flush_interval_ms'; SELECT * FROM system.settings WHERE name = 'stream_flush_interval_ms' ┌─name─────────────────────┬─value─┬─changed─┬─description────────────────────────────────────────┐ │ stream_flush_interval_ms │ 7500 │ 0 │ Timeout for flushing data from streaming storages. │ └──────────────────────────┴───────┴─────────┴────────────────────────────────────────────────────┘ Т.е. по идеи каждые 7.5 секунд данные должны сбрасываться? но поведения такого не наблюдаю. При перезагрузке процесса - данные сразу сбрасываются.

Vladimir
19.10.2018
08:54:01
@milovidov_an а нет планов внедрять многопроцессную архитектуру? сейчас некоторые типы запросов сложно убить, а некоторые при этом крашат сервер целиком. Кажется, что с многопроцессным подходом с этим было бы проще.

Michael
19.10.2018
10:14:58
Господа, кто-нибудь сталкивался с таймаутом при инсерте с помощью питоновской библиотеки clickhouse-driver?

prll
19.10.2018
10:25:31
Гурам
19.10.2018
10:32:40
Пока нет, https://github.com/yandex/ClickHouse/issues/3425
Хорошо, ждемс. Просто вчера тоже открывал issue)

prll
19.10.2018
10:34:04
ой а где?

Гурам
19.10.2018
10:35:19
ой а где?
https://github.com/yandex/ClickHouse/issues/3415

Google
Vadim
19.10.2018
11:19:13
Привет всем.! Кто подскажет, как увеличить количество активных кусков больше 300 ?

Kirill
19.10.2018
11:21:10
Но за это путь "вникуда"

Вот тут все настройки для MergeTree https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/MergeTree/MergeTreeSettings.h

Владимир
19.10.2018
11:22:24
Всем добрый день. У меня опять вопрос по ALTER TABLE UPDATE. Я оптимизировал запросы, но после успешного применения мутаций итоговая цифра выглядит не так как я ожидал - такое ощущение, что часть мутаций не применилась. Вопрос - если несколько мутаций работают с одним чанком, может ли возникнуть ситуация, когда они конкурируют и перезатирают результат работы друг друга? Или мутации применяются строго по очереди?

Vadim
19.10.2018
11:22:28
У нас бахнули много удалений в graphite_tree, и поэтому в нем много активных кусков, мутаций тысячи

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