
Alex
01.06.2017
12:04:51
Рефинк да

Roman
01.06.2017
12:06:23

Alex
01.06.2017
12:07:59
К сожалению, такая специфика приложения

Google

Pavel
01.06.2017
12:08:13
а можно уплотнить json в messagepack
и сжать его эдак раза в полтора, это конечно не решит проблемы с 20кб

Alex
01.06.2017
12:08:53
Сериализовать объект как угодно можно
Но это не решает проблемы реляционного преобразования

Alex
01.06.2017
12:09:40
А какого вида будут запросы? Раз группировок не предвидится.

Alex
01.06.2017
12:10:25
Просто выбрать эти самые сообщения по заданным критериям

Dmitrii
01.06.2017
12:13:08
Привет, есть ли возможность подключить SPSS Modeller к ClickHouse?

Alex
01.06.2017
12:18:14
Проблема с жирными столбцами в том, что разреженный индекс с ними плохо справляется. Если взять дефолтное значение гранулярности 8192, то будет вообще плохо - в худшем случае для чтения одного сообщения придётся зачитать 20кб * 8192 = примерно 160МБ данных (с диска, конечно, меньше, но ведь их ещё и разжимать...) Можно взять гранулярность поменьше, но тогда вырастет размер индекса, а он резидентный в памяти.

Alex
01.06.2017
12:19:28
Угу этого я и опасался
Есть какието эмпирики оценки объема индекса к гранулярности ?

Alex
01.06.2017
12:22:40
Чтобы прикинуть, можно посчитать сумму размеров полей индекса * количество строк / гранулярность и округлить вверх до ближайшей степени двойки
Ну или заглянуть в system.parts
столбец primary_key_bytes_in_memory_allocated

Google

Виктор
01.06.2017
13:33:27
Привет, коллеги! А как из count() возвращать 0, если нет совпадений?
(https://stackoverflow.com/questions/44307934/how-to-make-clickhouse-count-function-return-0-in-case-of-zero-matches)

Vladislav
01.06.2017
13:37:44
А никто не сталкивался с проблемой " DB::Exception: Cannot read all data in NativeBlockInputStream."? При записи в MaterializedVieew

papa
01.06.2017
13:48:03

Виктор
01.06.2017
13:55:36
?
Что-то не нашёл на Github, а ссылочкой не поделитесь?

Ivan
01.06.2017
14:11:00
Коллеги, а есть поддержка Liquibase для Clickhouse ?

papa
01.06.2017
14:14:56

Виктор
01.06.2017
14:15:52
Приятно, что мы не одни.

Dig
01.06.2017
14:36:03

Alex
01.06.2017
14:36:48
Всей таблицы

Dig
01.06.2017
14:39:59
Спасибо. А что произойдет, если размер индекса превысит размер памяти? Сервер упадет?
столбец primary_key_bytes_in_memory_allocated показывает размер индекса партиции или всей таблицы?

Alexander
01.06.2017
14:41:11
Вопрос: а хранимые функции будут или лучше про это забыть?

Alex
01.06.2017
14:42:48
Интересно, надо ли учитывать неактивные куски

Alexey
01.06.2017
15:22:04
Привет! скажите, а кто-нибудь пытался запускать клик-хаус в кластерном режиме, используя вместо zookeeper что-то иное?
например, etcd с оберткой с эмуляцией zookeeper api?
как быть, если ничего на яве использовать нельзя в проекте?

Maksim
01.06.2017
15:22:54
Техдир обещает распять?

Dmitry
01.06.2017
15:23:11
А то и раз шесть ;)

Vladislav
01.06.2017
15:23:34
Привет :) А ни у кого не возникало проблем с groupArrayUniq(...) от Tuple

Google

Alexey
01.06.2017
15:23:35
хуже)

Evgeny
01.06.2017
15:26:08
Всем привет! На сколько подходит кликхаус для систем с большим колличеством запросов на чтение?

papa
01.06.2017
15:26:32

Vladislav
01.06.2017
15:27:32
Пытаюсь сделать groupArrayUniq от нескольких колонок объединённых в tuple. Получаю DB::Exception: Cannot read all data in NativeBlockInputStream при чтении

Vladimir
01.06.2017
15:28:10

Vladislav
01.06.2017
15:29:16
Сам groupArrayUniq в MaterializedView вставляется

Alexey
01.06.2017
15:32:54

Vladimir
01.06.2017
15:33:52
Но вообще Джава в проде это не так больно

Maksim
01.06.2017
15:35:26
А где можно почитать: что такое зукипер, чем он отличается от zetcd?

Vladimir
01.06.2017
15:36:28
Zetcd реализация протоеола зукипера поверх etcd

Alex
01.06.2017
15:40:30
Кстати, пару дней назад появился пулреквест в zetcd, который вроде бы добавляет поддержку multiop (то, чего не хватало)
Желающие могут протестировать, вдруг не упадёт :)

Alexey
01.06.2017
15:49:26
интересно, гляну. спасибо

Vladimir
01.06.2017
15:52:46
Тут дело в том что по производительности zetcd будет хуже
Правда вопрос в том упретесь ли вы в нее

Andrey
01.06.2017
16:02:56

Vladimir
01.06.2017
16:05:04

Google

Vladimir
01.06.2017
16:05:31
После этого я для себя решил что в нем как то смысла пока нет

Romique
01.06.2017
17:58:18
Добрый вечер. Передаю через GET запрос запрос, содержащий regexp. Символы \\ URL-энкодятся и регэксп не срабатывает. Не подскажите, что делать?


yuyu
01.06.2017
18:45:38
Для загрузки данных из умирающей influx в КХ надо из csv файла со строками типа:
timestamp,tag, A=<значение>
...
timestamp, tag, B=<значение>
...
положить данные в таблицу КХ со структурой:
(timestamp, tag, A, B)
Засада в том, что строки с A и B для совпадающих значений timestamp,tag разбросаны случайно по csv файлу. gzip-нутых csv данных порядка 50-100 гигов.
Как лучше это сделать?
Пока надумал такое :
1) grep A < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV ' | clickhouse-client —query="INSERT INTO DB.tableA FORMAT CSV"
2) grep B < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV' | clickhouse-client —query="INSERT INTO DB.tableB FORMAT CSV"
3) INSERT INTO FinalTable FROM SELECT timestamp, tag, A, B FROM tableA INNER JOIN tableB USING timestamp, tag
4) DROP table tableA; DROP table tableB
Или есть более оптимальный КХ-way способ?


Vladimir
01.06.2017
20:11:33
Для загрузки данных из умирающей influx в КХ надо из csv файла со строками типа:
timestamp,tag, A=<значение>
...
timestamp, tag, B=<значение>
...
положить данные в таблицу КХ со структурой:
(timestamp, tag, A, B)
Засада в том, что строки с A и B для совпадающих значений timestamp,tag разбросаны случайно по csv файлу. gzip-нутых csv данных порядка 50-100 гигов.
Как лучше это сделать?
Пока надумал такое :
1) grep A < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV ' | clickhouse-client —query="INSERT INTO DB.tableA FORMAT CSV"
2) grep B < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV' | clickhouse-client —query="INSERT INTO DB.tableB FORMAT CSV"
3) INSERT INTO FinalTable FROM SELECT timestamp, tag, A, B FROM tableA INNER JOIN tableB USING timestamp, tag
4) DROP table tableA; DROP table tableB
Или есть более оптимальный КХ-way способ?
По аналогии https://stackoverflow.com/questions/31820281/linux-group-by-date-column-and-show-count


Maksim
02.06.2017
07:19:39
Добрый день подскажите пожалуйста, я сделал бэкапирование данных в кх методом копирования data папки во процессе работающего сервера, по размеру бэкапов вижу что они отличаются по размерам такое чувство что не все файлы копируются и включаются в архив - возможно по причине того что некоторые файлы не доступны для копирования т.к. используются сервером, но не уверен. Был бы рад любой критике

Alexey
02.06.2017
07:25:17
т.е. процессе clickhouse-server пишет/изменяет файлы, а вы в это время копируете их в другое место через обычные механизмы вроде "cp"?
и ожидаете, что при восстановлении у вас будут нормальные данные?
конечно схема mergetree - это не изменение "in place", но я бы все равно не надеялся на удачное восстановление из таких бэкапов

Denys
02.06.2017
07:27:45
а как насчет ФС со snapshot?


Maksim
02.06.2017
07:29:21
Для загрузки данных из умирающей influx в КХ надо из csv файла со строками типа:
timestamp,tag, A=<значение>
...
timestamp, tag, B=<значение>
...
положить данные в таблицу КХ со структурой:
(timestamp, tag, A, B)
Засада в том, что строки с A и B для совпадающих значений timestamp,tag разбросаны случайно по csv файлу. gzip-нутых csv данных порядка 50-100 гигов.
Как лучше это сделать?
Пока надумал такое :
1) grep A < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV ' | clickhouse-client —query="INSERT INTO DB.tableA FORMAT CSV"
2) grep B < file | clickhouse-local -S ... -if CSV -q 'SELECT ... format CSV' | clickhouse-client —query="INSERT INTO DB.tableB FORMAT CSV"
3) INSERT INTO FinalTable FROM SELECT timestamp, tag, A, B FROM tableA INNER JOIN tableB USING timestamp, tag
4) DROP table tableA; DROP table tableB
Или есть более оптимальный КХ-way способ?
Какого типа a и b и есть ли какие-нибудь характеристики по их физической близости друг к другу на диске?
Я сегодня первый раз столкнулся с тем, что кликхаус прекратил запрос со словами: 9g is too much for query, stop it


Igor
02.06.2017
07:31:01
max_memory_usage или как-то так

Maksim
02.06.2017
07:31:16
Я скорее про то, что считать нормальным
Пока что у меня под это рабоает только один сервер с 32 гб памяти, очевидно надо просить хостера расширять
Какие разумные цифры тут ставить? 16 гигов на запрос? Или лучше попробовать пооптимизировать запрос?

Vladimir
02.06.2017
07:37:38

Andrey
02.06.2017
07:37:49

Maksim
02.06.2017
08:01:10


yuyu
02.06.2017
08:02:26
Какого типа a и b и есть ли какие-нибудь характеристики по их физической близости друг к другу на диске?
a и b - UInt64 (счётчики пакетов и байтов). Про близость строк с a и b и одинаковым набором остальных полей (тегов и timestamp) ничего определённого сказать нельзя. Насколько я понимаю это просто тупой дамп из key-value storage в потрохах InfluxDB. Маловероятно, что там будет какая-то гарантированная упорядоченность.
Теоретически можно задачку решить чисто линуксовыми тулзами - слиянием через paste двух потоков (grep A|sort ...) и (grep B | sort ...), но я не пробовал и не знаю, как поведёт себя sort на многогигабайтном текстовом файле.
Вот пример куска исходного файла:
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488480600000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488481200000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488479100000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=20000i 1488479400000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488480600000000000

Google

Maksim
02.06.2017
08:02:45


Vladimir
02.06.2017
08:15:20
a и b - UInt64 (счётчики пакетов и байтов). Про близость строк с a и b и одинаковым набором остальных полей (тегов и timestamp) ничего определённого сказать нельзя. Насколько я понимаю это просто тупой дамп из key-value storage в потрохах InfluxDB. Маловероятно, что там будет какая-то гарантированная упорядоченность.
Теоретически можно задачку решить чисто линуксовыми тулзами - слиянием через paste двух потоков (grep A|sort ...) и (grep B | sort ...), но я не пробовал и не знаю, как поведёт себя sort на многогигабайтном текстовом файле.
Вот пример куска исходного файла:
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488480600000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488481200000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488479100000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=20000i 1488479400000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488480600000000000
Я думал где-то с месяц назад написать конвертер из InfluxDB в CH. Имя метрики - таблица. Но пока застопорилось на том что кажется надо свою библиотечку для КХ писать.


Andrey
02.06.2017
08:28:50


Maksim
02.06.2017
09:01:53
a и b - UInt64 (счётчики пакетов и байтов). Про близость строк с a и b и одинаковым набором остальных полей (тегов и timestamp) ничего определённого сказать нельзя. Насколько я понимаю это просто тупой дамп из key-value storage в потрохах InfluxDB. Маловероятно, что там будет какая-то гарантированная упорядоченность.
Теоретически можно задачку решить чисто линуксовыми тулзами - слиянием через paste двух потоков (grep A|sort ...) и (grep B | sort ...), но я не пробовал и не знаю, как поведёт себя sort на многогигабайтном текстовом файле.
Вот пример куска исходного файла:
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488480600000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 bytes=960000i 1488481200000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488479100000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=20000i 1488479400000000000
device_srcAS_nexthop_interfaces,device=10.146.0.1,iface_in=0,iface_out=22,nexthop=149.6.168.201,src_as=0 packets=10000i 1488480600000000000
я думаю, что стоит попробовать написать код, который будет читать из инфлюкса два синхронизированных по времени стрима для A и B и их заливать в кликхаус
другой вариант могу предложить: сделать собственный сторадж в котором строки вида: UTC:Int32, A:Int64, B:Int64 и пройтись по нему, перезаписав inplace
это вот два варианта, которые могу посоветовать


yuyu
02.06.2017
09:08:45

Maksim
02.06.2017
11:30:06
Я с вопросом про размер query. Это вообще разумно поднимать max query memory до 20 или 30 гигабайт? Т.е. я задрать могу, а насколько это оправдано? Может я просто не так пользуюсь и это уже неправильное использование инструмента?


Alex
02.06.2017
11:53:56
@maxlapshin возможно вы не совсем правильно используете кликхаус? Если был инфлюкс, где нормальной аграгации нету - а вы перешли на кликхаус, который заточен под агрегацию (т.е. не на стороне софта, а прямыми sql вытягивать данные) вот здесь уже нужно или лимитировать, или добавлять максимально доступное ОЗУ исходя из того, сколько может быть одновременных запросов т.к. при переполнении - падает весь демон, а не выдает ошибку для запроса
Не знаю как у кликхауса, но к примеру в касандре есть потоковое чтение что в вашем случае очень может помочь, т.е. оперативная память не будет сильно забиваться: прочитал->отдал, но с касандры только сырые данные можно будет получить + очень критично к параметрам WHERE по порядку выборки, или использовать ALLOW FILTERING и терять в скорости

Kirill
02.06.2017
11:56:44
Всем добрый день!
Подскажите, можно ли корректно удалить партицию из materialized view вида MergeTree?

Andrey
02.06.2017
12:07:53

Kirill
02.06.2017
12:08:56
Говорит, Method dropPartition is not supported by storage MaterializedView.
Если указать .inner, ругается на синтаксис

Maksim
02.06.2017
12:16:14