
Kirill
18.10.2018
11:25:40

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

Denis
18.10.2018
11:28:47

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

Denis
18.10.2018
11:31:20

Vladislav
18.10.2018
11:33:52

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:00:15

Илья
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

Denis
18.10.2018
12:38:51

Владимир
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

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

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
ааа.... я мысль вашу понял
типа оно сперва джойнит абы что, а потом отфильтровывает все по 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

Дмитрий
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

Denis
18.10.2018
16:23:14

Дмитрий
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

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

papa
19.10.2018
08:45:34

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 а нет планов внедрять многопроцессную архитектуру? сейчас некоторые типы запросов сложно убить, а некоторые при этом крашат сервер целиком. Кажется, что с многопроцессным подходом с этим было бы проще.

Belchikov
19.10.2018
09:58:33

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

prll
19.10.2018
10:25:31

Гурам
19.10.2018
10:32:40

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, и поэтому в нем много активных кусков, мутаций тысячи