Size: a a a

ClickHouse не тормозит

2019 December 17

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
не знаю, думаю кто-нибудь ржет, 3 тыщи человек, наверняка несколько знают
я просто скинул как создавал, ну вот вам create table но он ничем не отличается почти
источник

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
CREATE MATERIALIZED VIEW hits_view (event_date Date, webmaster_id UInt32, advertiser_id UInt32,
                                             campaign_id UInt32, stream_id UInt32, installs Int64,
                                             impressions Int64, clicks Int64,debit Decimal(38, 9), credit Decimal(38, 9)) ENGINE =
           ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/hits_view',
           '{replica}') PARTITION BY toYYYYMMDD(event_date) ORDER BY (event_date, webmaster_id, advertiser_id,
                                                                      campaign_id, stream_id) SETTINGS index_granularity = 8192 AS
SELECT event_date,
      webmaster_id,
      advertiser_id,
      campaign_id,
      stream_id,
      sum(installs)      as installs,
      sum(impressions)   as impressions,
      sum(clicks)        as clicks,
      sum(debit)         as debit,
      sum(credit)        as credit
FROM hit
GROUP BY event_date, webmaster_id, advertiser_id, campaign_id, stream_id
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
не знаю, думаю кто-нибудь ржет, 3 тыщи человек, наверняка несколько знают
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
красивая цифра
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Дмитрий Мищенко
я просто скинул как создавал, ну вот вам create table но он ничем не отличается почти
интересно, старый КХ ?

Просто новые умеют

create table X (A Int64) Engine=MergeTree order by tuple()
create materialized view B Engine =MergeTree order by tuple() as select * from X
alter  table B drop partition tuple();
OK

Или ругаются DB::Exception: MATERIALIZED VIEW targets existing table T Execute the statement directly on it..

И почему ошибка про distributed ?

В общем вам действительно тогда надо

ALTER TABLE `.inner.hits_view` ON CLUSTER {cluster}
   DROP PARTITION '20190913'
источник

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
интересно, старый КХ ?

Просто новые умеют

create table X (A Int64) Engine=MergeTree order by tuple()
create materialized view B Engine =MergeTree order by tuple() as select * from X
alter  table B drop partition tuple();
OK

Или ругаются DB::Exception: MATERIALIZED VIEW targets existing table T Execute the statement directly on it..

И почему ошибка про distributed ?

В общем вам действительно тогда надо

ALTER TABLE `.inner.hits_view` ON CLUSTER {cluster}
   DROP PARTITION '20190913'
Так тоже не работает(
источник

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
СH version 19.11.6.31 (official build)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Дмитрий Мищенко
Так тоже не работает(
ругается как ?
источник

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
А не, рабатает))) Обманул, до этого запускал когда парень выше посоветовал не сработало, что писало не помню но есть подозрение что table not exists потому что кавычки забыл
источник

ДМ

Дмитрий Мищенко... in ClickHouse не тормозит
Спасибо)
источник

P

Pookie in ClickHouse не тормозит
Ребят, кто контрибьютит в кх, есть задачка :) за вознаграждение! Нужна функция, которая будет возвращать query_id который был передан в кх. (В кх такая фича есть) За подробностями можно в личку! Спасибо :)
источник

S

Slach in ClickHouse не тормозит
Pookie
Ребят, кто контрибьютит в кх, есть задачка :) за вознаграждение! Нужна функция, которая будет возвращать query_id который был передан в кх. (В кх такая фича есть) За подробностями можно в личку! Спасибо :)
я думаю вам лучше посмотреть в github и попробовать найти контакты и напрямую спросить
источник

S

Slach in ClickHouse не тормозит
и лучше всего feature request оформить на github
источник

P

Pookie in ClickHouse не тормозит
Slach
я думаю вам лучше посмотреть в github и попробовать найти контакты и напрямую спросить
Сюда обратился потому что, тут могут быть и не контрибьюторы готовые подзаработать :)
источник

P

Pookie in ClickHouse не тормозит
Slach
и лучше всего feature request оформить на github
А в целом спасибо за советы!
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Pookie
Ребят, кто контрибьютит в кх, есть задачка :) за вознаграждение! Нужна функция, которая будет возвращать query_id который был передан в кх. (В кх такая фича есть) За подробностями можно в личку! Спасибо :)
мне кажется вы ошибаетесь, query_id нельзя передать.

вам проще сделать

select /* q_id=UUID */ .... (добавлять уникальный id в тект запроса)
потом селектом по system.processes выбирать like '%UUID%'

и если вы не в курсе то http тоже умеет возвращать прогресс
curl -vv 'http://localhost:8123/?send_progress_in_http_headers=1' --data-binary @testa3.sql
< X-ClickHouse-Progress: {"read_rows":"24 996 720","read_bytes":"204755840","total_rows":"38 308 864"}
< X-ClickHouse-Progress: {"read_rows":"22 941 868","read_bytes":"233006776","total_rows":"36 059 136"}
источник

P

Pookie in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
мне кажется вы ошибаетесь, query_id нельзя передать.

вам проще сделать

select /* q_id=UUID */ .... (добавлять уникальный id в тект запроса)
потом селектом по system.processes выбирать like '%UUID%'

и если вы не в курсе то http тоже умеет возвращать прогресс
curl -vv 'http://localhost:8123/?send_progress_in_http_headers=1' --data-binary @testa3.sql
< X-ClickHouse-Progress: {"read_rows":"24 996 720","read_bytes":"204755840","total_rows":"38 308 864"}
< X-ClickHouse-Progress: {"read_rows":"22 941 868","read_bytes":"233006776","total_rows":"36 059 136"}
Опишу задачу. Нам не для прогресса 😊

Мы вставляем данные в таблицу, но из-за особенностей вставки не можем отслеживать все ли вставилось, если процесс вставки упал. Дубли недопустимы. Поэтому пришла мысль добавить в таблицу колонку queryId и в качестве дефолтного выражения держать использовать например getQueryId(). Соответственно мы будем видеть в таблице какой запрос какие данные записал. И если он отвалился, то просто вычищаем все данные по этому queryId, либо делаем diff с тем, что записалось и дописываем то, что не записалось.
источник

P

Pookie in ClickHouse не тормозит
У нас данные лежат в подготовленных файлах, в одном файле может быть одна строка, а может быть и 1000. Мы собираем файлы в поток и просто кормим поток через http в КХ.
источник

P

Pookie in ClickHouse не тормозит
Дописывать queryId в каждую строку тоже не можем по объективным причинам 😊
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Pookie
Опишу задачу. Нам не для прогресса 😊

Мы вставляем данные в таблицу, но из-за особенностей вставки не можем отслеживать все ли вставилось, если процесс вставки упал. Дубли недопустимы. Поэтому пришла мысль добавить в таблицу колонку queryId и в качестве дефолтного выражения держать использовать например getQueryId(). Соответственно мы будем видеть в таблице какой запрос какие данные записал. И если он отвалился, то просто вычищаем все данные по этому queryId, либо делаем diff с тем, что записалось и дописываем то, что не записалось.
все это ненужные велосипеды. Надо просто делать атомарные инсерты и использовать дедупликацию КХ и делать ретрай, при таймауте.
источник