@clickhouse_ru

Страница 94 из 723
Nataliya
21.03.2017
17:23:41
Планируем чуть позже.

Dig
21.03.2017
17:24:11
Спасибо.

Будем ждать?

Vitaliy
21.03.2017
17:38:44
Google
Nataliya
21.03.2017
18:44:55
Поможете с анонсированием? :)

в Киеве

Andrey
21.03.2017
18:46:25
Мы поможем)

Nataliya
21.03.2017
19:00:22
Здорово. Собираем чемоданы :)

Denys
21.03.2017
20:47:40
Отлично, Харьков уже спит на чемоданах)

Vitaliy
21.03.2017
22:03:08
Давайте в Харькове

Andrey
21.03.2017
22:19:58
Подскажите, а MATERIALIZED VIEW на движке AggregatingMergeTree содержит аггрегированные данные сразу после insert в таблицу на которую смотрит, или должно пройти какое то время?

Alexander
21.03.2017
22:55:57
По идее -- сразу. Операция атомарная с insert.

Andrey
21.03.2017
23:07:22
Я чет если много данных заливаю сразу, результаты не сходятся.

Dmitriy
22.03.2017
07:57:56
Давайте в Харькове
+3 так точно) да и Харьков ближе ?

Vladislav
22.03.2017
08:12:13
А в СПб?)

Dmitry
22.03.2017
08:13:35
Подскажите, а MATERIALIZED VIEW на движке AggregatingMergeTree содержит аггрегированные данные сразу после insert в таблицу на которую смотрит, или должно пройти какое то время?
Нет, агрегации приходит в фоне. Поэтому надо всегда считать, что данные недоагрегированные и доагрегировать запросом.

Google
Andrey
22.03.2017
08:20:48
Ну т.е. я делаю запрос с count и group by в таблицу сырых данных, а потом доагрегирующий запрос в view агрегатов. И данные не сходятся.

Причем это как то зависит от обьема. Когда мало данных заливаю, все ок.

Nikita
22.03.2017
10:17:26
если иногда (совсем редко) хочется вытаскивать данные с пагинацией сортированные, скажем по дате-времени (больше чем одна запись в секунду), то какие варианты есть получить детерминированные результаты? в голову ничего не приходит, кроме как добавить еще одно поле-счетчик для всех строк.

Eugene
22.03.2017
10:55:11
Подскажите, какие есть варианты импорта данных из сишных скриптов ? Виндовая платформа, си обычный, не шарп.

Andrey
22.03.2017
10:58:41
выхлоп в TSV и импорт через клиент. А вообще зависит от данных.

Igor
22.03.2017
11:01:28
Подскажите, какие есть варианты импорта данных из сишных скриптов ? Виндовая платформа, си обычный, не шарп.
есть c++ клиент/либа в разработке, https://github.com/artpaul/clickhouse-cpp но это не си, конечно

Eugene
22.03.2017
11:02:27
выхлоп в TSV и импорт через клиент. А вообще зависит от данных.
вот это решение засчет больших создаваемых файлов стало уже тягостным

Andrey
22.03.2017
11:03:41
вот это решение засчет больших создаваемых файлов стало уже тягостным
да просто вопрос странный. У Clickhouse есть все мыслимые и немыслимые интерфейсы вплоть до http. Как удобнее так и лейте.

от языка то не особо зависит. Если только вы не планируете в КХ класть прямо готовые партиции в его формате

Eugene
22.03.2017
11:06:03
от языка то не особо зависит. Если только вы не планируете в КХ класть прямо готовые партиции в его формате
Ну просто я не очень сведущ в особенностях нативного си, насколько там просто выдать в потом данные массивом, тем более на виндовой платформе. Посему если бы был плагин/либа/модуль который сам знает как портировать данные на сервер, а я бы ему просто скормил массив - это и было бы искомым для меня решением и ответом на вопрос.

Pavel
22.03.2017
11:41:44
@ewgeniyk такое есть и для С++ и для го

в чем проблема?

и что такое сишные скрипты?

Eugene
22.03.2017
11:48:51
и что такое сишные скрипты?
есть программный комплекс, написанный на си, в котором есть модуль, оперирующий массивом данных, которые надо записать в ClickHouse

Pavel
22.03.2017
11:49:21
https://github.com/artpaul/clickhouse-cpp ?

Eugene
22.03.2017
11:49:24
в чем проблема?
Проблема в том, что я не знаю этого решения и поэтому спросил у того кто а) его знает и б) может на него навести

https://github.com/artpaul/clickhouse-cpp ?
спасибо, ознакомлюсь

Pavel
22.03.2017
11:49:51
но это С++

CH написан на нем и я не уверен, что стоит ожидать версии на чистом С от авторов (исправьте, если я не прав)

Google
Vladislav
22.03.2017
13:27:07
привет. а данные между репликами сразу переливаются? переезжаем из одного сервера кликхауса в кластер, сделали 3 шарда по 2 реплики (связь 1-2, 3-4, 5-6). создал везде таблицы test, на 1-м сервере distributed-таблицу. вставил по одной строке в 1, 2, 3 ноды. теперь при селекте вижу то 1 запись, то 2. получается, что между 3-й и 4-й нодами данные не перелились?

Igor
22.03.2017
13:27:18
не сразу

Вот ещё - репликация асинхронная мульти-мастер, то есть на реплике может не быть свежих данных.

Vladislav
22.03.2017
13:29:03
спасибо. а как в таком случае добиться селекта свежих данных из distributed-таблицы?

Igor
22.03.2017
13:37:20
никак, полагаю делать селект не из distributed таблицы, а из mergetree (или какой там) таблицы на сервере, на который инсертятся данные

Vladislav
22.03.2017
13:38:48
ясно, спасибо.

Alex
22.03.2017
13:42:43
Сейчас можно мониторить отставание реплик, например получая информацию из http://localhost:8123/replicas_status?verbose=1

Если у вас одна строчка долго реплицируется, возможно что-то не в порядке с конфигурацией

В будущем планируем сделать отстреливание сильно отстающих реплик

Andrey
22.03.2017
13:48:08
Всем добрый день. Спрошу повторно, может кто подскажет. Создаю таблицу, и MATERIALIZED VIEW с движком AggregatingMergeTree следящее за ней. Заливаю данные. Делаю селект из вьюхи с доагрегацией и селект из таблицы сырых данных. Результаты агрегатов не сходятся. Причем если залить данных не много, то все ок.

В какую сторону смотреть?

Vladislav
22.03.2017
13:50:58
около 5 минут ждал пока не долилось. конфиг похож на тот, который в документации, только добавлен еще 1 шард.

Если у вас одна строчка долго реплицируется, возможно что-то не в порядке с конфигурацией

Alex
22.03.2017
13:52:12
А в логах есть какие-нибудь ошибки?

Andrey
22.03.2017
13:57:49
Не знаю как телеграм отнесется к форматированию. Но попробуем)

/* Создаем таблицу */ CREATE TABLE events ( user_id Int64, event_id Int64, event_date Date ) ENGINE = MergeTree(event_date, (user_id), 8192); /* Создаем MATERIALIZED VIEW следящее за таблицей events */ CREATE MATERIALIZED VIEW events_agg ENGINE = AggregatingMergeTree(event_date, (event_id, user_id), 8192) AS SELECT event_date, event_id, user_id, countState(event_id) AS count_of_events FROM events GROUP BY event_id, user_id, event_date;

Заливаю данные

Затем 2 запроса для сверки

/* Делаем выборку из таблцы сырых данных. я получаю результат: ┌─event_date─┬─event_id─┬─user_id─┬─count(event_id)─┐ │ 2016-02-09 │ 3402641 │ 2136 │ 7 │ └────────────┴──────────┴─────────┴─────────────────┘ */ SELECT event_date, event_id, user_id, count(event_id) FROM events where event_id = 3402641 and event_date = '2016-02-09' and user_id = 2136 GROUP BY event_id, user_id, event_date;

Google
Andrey
22.03.2017
13:58:46
/* Делаем выборку из VIEW с аггрегатами 0 rows in set. Elapsed: 0.004 sec. Processed 24.58 thousand rows, 1.02 MB (5.66 million rows/s., 234.94 MB/s.) */ SELECT event_date, event_id, user_id, countMerge(count_of_events) FROM events_agg where event_id = 3402641 and event_date = '2016-02-09' and user_id = 2136 GROUP BY event_id, user_id, event_date;

Alexander
22.03.2017
14:19:01
ENGINE = MergeTree(event_date, (user_id), 8192);

event_id не потерялся?

Но вообще-то странно выглядит. Такой именно сценарий мы не пробовали, но SummingMergeTree работает без нареканий

evervoid
22.03.2017
14:28:55
Всем привет. Пытаемся вставить достаточно большую пачку в кликхаус, через http. Ругается ошибкой: Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: toDate, e.what() = DB::Exception В каком случае это может быть?

Andrey
22.03.2017
14:30:07
Но вообще-то странно выглядит. Такой именно сценарий мы не пробовали, но SummingMergeTree работает без нареканий
Я может что-то не верно делаю. У меня задача получить таблицу с сырыми данными и таблицу с автообновляемыми агрегатами рядом.

Fike
22.03.2017
14:30:24
это не та же проблема?

Так и есть. Обычно INSERT предназначен для вставки готовых данных в заданном формате и не умеет выполнять выражения (такие как toDate(now()) или то же самое - today()). В качестве исключения, возможность выполнять выражения, была добавлена в формат Values. Но эта возможность добавлена в очень ограниченном виде. Во-первых, производительность вставки будет очень низкой. Во-вторых, она работает в пределах размера данных, помещающихся в буфер (~1 МБ), и в случае большего размера, выдаётся недостаточно хорошая диагностика - именно это вы наблюдаете. Поэтому я предлагаю всё-таки указывать конкретное значение даты в виде '2017-03-19'.

evervoid
22.03.2017
14:31:59
Понятно, спасибо.

Fike
22.03.2017
14:32:46
Если что, это прямо из этого же чата сообщение - можно поиском найти, я помню, что там была более обширная дискуссия

evervoid
22.03.2017
14:35:02
Вообще, мы пытаемся вставить toDate от таймстемпа, а можно ли вообще не делать этого преобразования, а сразу таймстемп вставлять в Date поле?

Alexey
22.03.2017
14:37:15
Надо объявить в таблице примерно так: date Date DEFAULT toDate(timestamp) и затем при INSERT в списке полей INSERT INTO t (c1, c2, ...) VALUES не указывать этот столбец. Тогда для него значение будет вычисляться при вставке само.

evervoid
22.03.2017
14:42:48
Спасибо!

Oleg
22.03.2017
14:46:23
Подскажите, пожалуйста, подобное поведение ch с Date и DateTime норма, или будет меняться? При вставке значений '1970-01-01' и '1970-01-01 00:00:00' соответственно, ch их в селектах выдаёт как '0000-00-00' и '0000-00-00 00:00:00', а самое противное, их же функция max() выдаёт.

Igor
22.03.2017
14:52:01
Подскажите, пожалуйста, подобное поведение ch с Date и DateTime норма, или будет меняться? При вставке значений '1970-01-01' и '1970-01-01 00:00:00' соответственно, ch их в селектах выдаёт как '0000-00-00' и '0000-00-00 00:00:00', а самое противное, их же функция max() выдаёт.
в доке описано в т.ч. то, что может поменяться > Date представлены как UInt16, содержащий количество дней, прошедших с 1970-01-01 в качестве значения. > Позволяет хранить значения от чуть больше, чем начала unix-эпохи до верхнего порога, определяющегося константой на этапе компиляции (сейчас - до 2038 года, но может быть расширено до 2106 года). > DateTime представлены как UInt32, содержащий unix timestamp в качестве значения.

Oleg
22.03.2017
15:05:57
спасибо, на слова "чуть больше" я внимания не обратил :) Посмотрел: 1970-01-02 нормально сохраняется, 1970-01-01 03:00:01 тоже. В общем, получается что при импорте в ch надо даты править принудительно, если в старой базе они нелевые были

+3 видимо питерский часовой пояс

Sergey
22.03.2017
16:06:27
Как заставить ReplacingMergeTree схлопывать данные?

Igor
22.03.2017
16:10:51
они сами схлопываются, если хочется именно заставить - можно прогнать OPTIMIZE или сделать запрос с FINAL (будет очень медленно выполняться)

Google
Sergey
22.03.2017
16:14:35
Igor
22.03.2017
16:16:07
> ReplacingMergeTree > Слияние происходят в фоне, в неизвестный момент времени, на который вы не можете ориентироваться. > Некоторая часть данных может так и остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных. > Таким образом, ReplacingMergeTree подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантий отсутствия дубликатов.

Andrey
22.03.2017
19:16:29
да, бага воспроизводится, будем..
а я так надеялся что у меня просто руки кривые. Расскажете потом в чем дело было?

Vitaliy
22.03.2017
21:57:23
Пробовали ли этот алгоритм вместо siphash https://github.com/Cyan4973/xxHash ?

Alexey
22.03.2017
23:22:56
SipHash является криптографической хэш-функцией, а xxHash - нет. Таким образом, сравнение некорректно. xxHash относится к тому же классу, что и, например, CityHash, и его производительность примерно в 10 раз выше, чем SipHash.

Dmitriy
23.03.2017
08:15:38
сегодня наблюдал картину. очень слабый сервер 1ГБ рам и 1 Ядро при инсерте данных, данных исертятся через интернет. в пике видел 112Мбит. СH падает вот с таким сообщением. 2017.03.23 04:06:57.542078 [ 24 ] <Debug> default.events_jan_tv11 (Data): Removing part 20170201_20170201_8592_8592_0 2017.03.23 04:06:57.561428 [ 24 ] <Debug> default.events_jan_tv11 (Data): Removing part 20170201_20170201_8594_8594_0 2017.03.23 04:07:48.955882 [ 15 ] <Trace> TCPConnectionFactory: TCP Request. Address: :39883 2017.03.23 04:07:48.955958 [ 15 ] <Debug> TCPHandler: Connected ClickHouse client version 1.1.54164, user: default. 2017.03.23 04:07:49.808577 [ 15 ] <Debug> executeQuery: (from:39883) INSERT INTO default.events_jan_tv11 format Native 2017.03.23 04:07:54.361222 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8609_8609_0. 2017.03.23 04:07:57.157735 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8611_8611_0. 2017.03.23 04:07:59.579247 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8613_8613_0. Killed запускал прямо из консили. Притензий не имею, добавим РАМа и посмотрим что будет. Это наверное следует рассматривать как информацию о том как посупать не нужно

Andrey
23.03.2017
08:16:33
ООМ Killer пришел?

Виктор
23.03.2017
08:17:06
Видимо да

При желании можно выставить ограничения по памяти, в том числе и менее 1 gb

Тогда падать не должен

Vladimir
23.03.2017
08:17:55
сегодня наблюдал картину. очень слабый сервер 1ГБ рам и 1 Ядро при инсерте данных, данных исертятся через интернет. в пике видел 112Мбит. СH падает вот с таким сообщением. 2017.03.23 04:06:57.542078 [ 24 ] <Debug> default.events_jan_tv11 (Data): Removing part 20170201_20170201_8592_8592_0 2017.03.23 04:06:57.561428 [ 24 ] <Debug> default.events_jan_tv11 (Data): Removing part 20170201_20170201_8594_8594_0 2017.03.23 04:07:48.955882 [ 15 ] <Trace> TCPConnectionFactory: TCP Request. Address: :39883 2017.03.23 04:07:48.955958 [ 15 ] <Debug> TCPHandler: Connected ClickHouse client version 1.1.54164, user: default. 2017.03.23 04:07:49.808577 [ 15 ] <Debug> executeQuery: (from:39883) INSERT INTO default.events_jan_tv11 format Native 2017.03.23 04:07:54.361222 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8609_8609_0. 2017.03.23 04:07:57.157735 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8611_8611_0. 2017.03.23 04:07:59.579247 [ 15 ] <Trace> default.events_jan_tv11 (Data): Renaming tmp_20170202_20170202_8613_8613_0. Killed запускал прямо из консили. Притензий не имею, добавим РАМа и посмотрим что будет. Это наверное следует рассматривать как информацию о том как посупать не нужно
См dmesg

Dmitriy
23.03.2017
08:18:52
root@qsg:/etc/clickhouse-server# dmesg -T [Tue Mar 21 15:36:02 2017] Out of memory in UB 10599: OOM killed process 521 (clickhouse-serv) score 0 vm:2111360kB, rss:1025832kB, swap:456676kB [Thu Mar 23 03:54:15 2017] Out of memory in UB 10599: OOM killed process 22388 (clickhouse-serv) score 0 vm:1519488kB, rss:512880kB, swap:514324kB [Thu Mar 23 04:16:43 2017] Out of memory in UB 10599: OOM killed process 22706 (clickhouse-serv) score 0 vm:1557376kB, rss:505656kB, swap:501556kB

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