@clickhouse_ru

Страница 106 из 723
Kirill
04.04.2017
12:15:55
Кирилл, добавьте, пожалуйста, работу с условиями вида ()?():(), если это еще не исправлено
должно работать, если будут проблемы (я мог кое что и поломать) создавайте issue или мне пишите

Mike
04.04.2017
12:46:56
Мы пробуем прикрутить Spago BI, пока в процессе
Получилось прикрутить с последним драйвером по этой инструкции: http://forge.fiware.org/plugins/mediawiki/wiki/fiware/index.php/Data_Visualization_-_SpagoBI_-_Installation_and_Administration_Guide

Alexey
04.04.2017
12:51:21
Интересно будет узнать впечатления - насколько хорошо работает, удобно ли пользоваться.

Mike
04.04.2017
13:01:18
Первые впечатления — божественно, дэшборды драг энд дропом, то что нужно :)

Google
Mike
04.04.2017
13:01:35
Но это только первые, дальше может пост напишу куда-то с практикой

Aleksey
04.04.2017
13:12:02
Да, такой проблемы быть не должно. Реплика должна сама выходить из readonly состояния. На всякий случай нужна информация - как долго реплика находится в состоянии readonly, есть ли выполняющиеся сейчас длинные мержи или ALTER-ы, или скачивания кусков другими репликами (можно проверить по использованию сети); что в логе клиента к ZooKeeper-у в /var/log/clickhouse-server/stderr Также не помешает вывод команды sudo gdb -batch -ex 't apply all bt' -p $(pidof clickhouse-server)
В логе clickhouse непрерывно появляется такое сообщение: <Error> void DB::ReplicatedMergeTreeAlterThread::run(): Code: 999, e.displayText() = zkutil::KeeperException: invalid zhandle state, path: /clickhouse/replication/clusterName/shardName/dbName/tableName/columns, e.what() = zkutil::KeeperException, Stack trace: Видимо, в нём всё дело? stack trace могу показать, если нужно. По остальным вопросам: 1. По грубой оценке реплика в таком состоянии около двух часов 2. Альтеров быть не должно (хотя в тексте ошибки виден класс со словом Alter в названии) 3. Мерджи могут быть, т.к. идёт вливка данных. Но я пробовал остановить вливку и дождаться, пока в system.merges и replication_queue станет пусто - не помогало. 4. В stderr последние сообщения были 2 часа назад (connection timed out, stale file handle) 5. Команду сам выполнить не могу. Если всё-таки будет нужна - попрошу админов

Alexey
04.04.2017
13:26:10
Сначала стоит обновиться до последней версии. В ней исправлена ошибка - невозможно переустановить сессию с ZK при очень большом количестве watch-ей (возникает, если на сервере много таблиц).

Aleksey
04.04.2017
13:30:10
Ок, понял. Обновимся

Dig
04.04.2017
13:44:39
День добрый, а можно ли для полей в Nested указать DEFAULT значения? Пробовал так: CREATE TABLE table_test( date Date, isp Nested ( name String, ispHash Int64 Default cityHash64(isp.name) ) ENGINE = MergeTree(date, (date), 8192) Выдает syntax error

Alexey
04.04.2017
13:51:00
Да.

День добрый, а можно ли для полей в Nested указать DEFAULT значения? Пробовал так: CREATE TABLE table_test( date Date, isp Nested ( name String, ispHash Int64 Default cityHash64(isp.name) ) ENGINE = MergeTree(date, (date), 8192) Выдает syntax error
Есть неудобный способ: CREATE TABLE table_test ( date Date, isp.name Array(String), isp.ispHash Array(Int64) DEFAULT arrayMap(x -> cityHash64(x), isp.name) ) ENGINE = MergeTree(date, date, 8192) (несколько столбцов-массивов с общим префиксом до точки в имени, полностью эквивалентны Nested структуре).

Вокруг составных имён поставьте обратные кавычки (их съел Telegram).

Dig
04.04.2017
13:58:04
Есть неудобный способ: CREATE TABLE table_test ( date Date, isp.name Array(String), isp.ispHash Array(Int64) DEFAULT arrayMap(x -> cityHash64(x), isp.name) ) ENGINE = MergeTree(date, date, 8192) (несколько столбцов-массивов с общим префиксом до точки в имени, полностью эквивалентны Nested структуре).
спасибо, попробую. В принципе Nested в моем случае не особо нужны, просто хотел поиграться с уменьшением времени запроса: SELECT ispHash, any(isp), count() as total FROM table_test GROUP BY ispHash ORDER BY total desc limit 20 Если убрать any(isp), то запрос выполняется в два раза быстрее, вот я и подумал, может Nested поможет

И еще. В Google группе вычитал: "Существует возможность предагрегировать данные внутри таблицы с помощью AggregatingMergeTree. Эта возможность не часто используется на практике и я её могу порекомендовать только для особых случаев." Так использовать или не использовать AggregatingMergeTree вот в чем вопрос!

Alexey
04.04.2017
15:11:41
Уже довольно много пользователей используют AggregatingMergeTree. Существенных проблем нет.

Google
Andrey
04.04.2017
19:17:47
А есть ли возможность сделать rebuild для materialized view?

Alexey
04.04.2017
19:26:55
Только удалить и создать заново с опцией populate. (Замечание: если VIEW с GROUP BY, то при создании может не хватить оперативки - тогда придётся указывать настройки для внешней агрегации.)

Andrey
04.04.2017
19:29:41
Поавильно ли я понял, если у меня есть agregation materialized view, следящее за таблицей, то я могу его пересоздать и пересчитать все данные?

Alexey
04.04.2017
19:30:41
Да. Но может быть тяжело, если данных много.

Andrey
04.04.2017
19:34:10
Ок, понял. Спасибо!

Igor
04.04.2017
20:31:31
А кто работал с ReDash и Zeppelin в связке с CH, можете поделится опытом - как оно работает ? Буду признателен)

f1yegor
04.04.2017
20:34:24
я работал Zeppelin + CH

Mikhail
04.04.2017
20:37:13
Привет.

Вопрос как раз про AggregatingMergeTree: есть ли способ сделать что-то типа вот такого: sum(if(key1 = 2, sumMerge(value1), 0)) ? Я получаю ошибку DB::Exception: Aggregate function sumMerge(value1) is found inside another aggregate function in query. Есть ли способ это обойти, кроме группировки по key1 и оборачиванию в дополнительный view? Ну и, конечно, без изменения таблицы с прегенерацией этого if'а.

ptchol
04.04.2017
20:39:37
у свежего редаша появилась проблема рендеринга больших таблиц независимо от датасорса, если вы попытаетесь сделать запрос который вовзращает скажем 20к строк, то фетч результата повесит браузер вам.

Igor
04.04.2017
20:42:52
у свежего редаша появилась проблема рендеринга больших таблиц независимо от датасорса, если вы попытаетесь сделать запрос который вовзращает скажем 20к строк, то фетч результата повесит браузер вам.
А удобно писать запросы в нем по сравнению с CHgui/Tabix (если работали с ним конечно) ? Большой датасет и мой tabix кладет, т.к рендер более 10К записей в браузере это оверкилл для JavaScript(dom)

f1yegor
04.04.2017
20:43:31
ну там же обычно всегда есть лимит выборки. по дефаулту часто 1000 строк

ptchol
04.04.2017
20:47:43
А удобно писать запросы в нем по сравнению с CHgui/Tabix (если работали с ним конечно) ? Большой датасет и мой tabix кладет, т.к рендер более 10К записей в браузере это оверкилл для JavaScript(dom)
к сожалению с ними не работал, но визуально смотря на CHgui кажется что редаш менее удобен, и может оказаться привлекательным только в случае консолидации данных из разных дата сорсо

f1yegor
04.04.2017
20:53:33
народ, попрошу тапками меня не пинать. кто может помочь собрать CH на fedora25 ? для devel целей

Mikhail
04.04.2017
21:48:21
sumMergeIf(value1,key1=2) ?
Хм. Реально работает, и, кажется, даже правильно. Круто, спасибо!

Maksim
04.04.2017
22:03:45
Ребята провел синтетический тест. вышло 30 тыс всавок в сек. внутри сети по http. у кого-то результаты выше?

или может кто скажет как добиться больших результатов

hamper ?
04.04.2017
22:04:24
Пачками вставлял?

Maksim
04.04.2017
22:05:54
драйвер я как понял формирует INSERT VALUES(), (), () .. запрос и шлет такую строку на кх

Google
Maksim
04.04.2017
22:06:01
да пачка 30 тыс

Igor
04.04.2017
22:16:59
драйвер я как понял формирует INSERT VALUES(), (), () .. запрос и шлет такую строку на кх
Если через мой драйвер $db->enableHttpCompression(true); $db->insertBatchTSVFiles(...) Это отправляет файловый stream через curl сразу в CH, с сжатием на лету Если так, то скорость маленькая, может сеть/IO, сравните с консольным curl Возможно данные "не удобные" для CH

Maksim
04.04.2017
22:24:58
Если через мой драйвер $db->enableHttpCompression(true); $db->insertBatchTSVFiles(...) Это отправляет файловый stream через curl сразу в CH, с сжатием на лету Если так, то скорость маленькая, может сеть/IO, сравните с консольным curl Возможно данные "не удобные" для CH
через метод insert отправлял. передаю массив не ассоциатвный. только значения. в другом параметре insert массив полей. у вас этот метод тоже столько вставок в секунду дает ?

все в рамках одной сети одного ДЦ

Igor
04.04.2017
22:37:19
insert медленный, пачками через InsertBatch будет перфоманс

Maksim
04.04.2017
22:38:41
это через insert. правда на сервере пало памяти смог только 1500 кинуть на вставку. не хватает памяти

а вот tsv . видимо он не очень быстрый на малом количество записей

Igor
04.04.2017
22:41:25
Память жрет при insert т.к читает и хранит в ней, insertBatch не использует память т.к делает stream т.е грубо из файла поток передаётся сразу на http уровень.

Maksim
04.04.2017
22:42:59
Imported items 3000 | total: 3000 | time: 0.071 seconds

это tsv

что-то совсем слабо

Igor
04.04.2017
22:46:09
Батч большой должен быть 50К, что 5 строк вставлять что 5000 - затраты на сеть (http уровень)

Maksim
04.04.2017
22:48:00
ну у вас такой же результат на вставку ?

Igor
04.04.2017
22:51:07
Не знаю))) Уже как полгода не мерил и не смотрел ) Мы в среднем получаем 20К/RPS -> php на ура пушит это наш c++/java ETL еще больше пропихивают.... Совет пробовать: curl из консоли...

Igor
04.04.2017
22:53:57
rps - req.per.sec

Google
Maksim
04.04.2017
22:57:51
rps - req.per.sec
не понял. можно по русски?

Igor
04.04.2017
22:59:51
ну.... мне даже как-то не ловко говорить в этом чате, что у нас ВСЕГО нагрузка 20 000 запросов в секунду и мы их отправляем в CH. чувствую себя "малышариком")

Maksim
04.04.2017
23:01:45
ну.... мне даже как-то не ловко говорить в этом чате, что у нас ВСЕГО нагрузка 20 000 запросов в секунду и мы их отправляем в CH. чувствую себя "малышариком")
20 000 норм. я видел ваш сайт не думаю что там может быть больше запросов. но 20 000 за какое время вставляются ?

Igor
04.04.2017
23:08:11
Хм... мы не сайт, мы новостная сеть ( урощенно рекламная сеть ) нагрузка=сумме всех основных сми РФ... Померьте время через консоль через нативный curl, как написано в документации к CH или еще лучше clickhouse-client, получите референс ... предлагаю не отвлекать 543 мембера, на пхп)

Vladimir
04.04.2017
23:20:37
@maksim_melnichuk я в бенчмарках, но правда под метрики (вставка строки, трех чисел и даты с индексом по строке, дате и одному из чисел), добивался батчами 20 инсертов по 120000 строк в каждом в секунду. То есть 2.4 млн строк в секунду. Но это код на го и хттп с rowbinary был.

Vladimir
04.04.2017
23:23:22
не пойму как так.. 40+ столбцов два индекса. но результаты совсем плохи. один сервер ?
У меня был 1 сервер, да, но относительно неплохой. 2xE5-2620v2, 128gb ram. Половина цпу правда кушалась генератором нагрузки

не пойму как так.. 40+ столбцов два индекса. но результаты совсем плохи. один сервер ?
Кликхаус любит большие батчи. И возможно пхп драйвер так себе на вставку

Смотри что происходит на сервере по ресурсам. Потребление цпу, сеть и т.п.

Maksim
04.04.2017
23:24:36
У меня был 1 сервер, да, но относительно неплохой. 2xE5-2620v2, 128gb ram. Половина цпу правда кушалась генератором нагрузки
я поставил на не очень мощный по сравнению с вашим. всего 4 гига оперативки. но по htop не вижу нагрузки совсем. может играет еще роль отправляющий сервер он вообще 512 mb ram

Vladimir
04.04.2017
23:24:58
Пхп еще однопоточный

То есть посмотри не проблема ли в генераторе нагрузки

Короче собирайте статистику по потреблению ресурсов и на генераторе

Поэтому тут и советовали взять консольный клиент и готовые tsv файлы. Еще сеть проверь, кстати. Перфом банальным

Maksim
04.04.2017
23:28:16
Поэтому тут и советовали взять консольный клиент и готовые tsv файлы. Еще сеть проверь, кстати. Перфом банальным
ну консольный клиент не вариант. т.к. мы будем слать запросы на отдельный сервер по http а не внутри сервера кх. как сеть можно проверить ?

так прикольно)) просто привел данные к типу. time() поменял на date и увеличилась скорость))

Imported items 165000 | time: 1.013 seconds

Vladislav
05.04.2017
07:18:05
Нас устраивает redash. Привлекает в первую очередь возможностью работать в python и pandas напрямую, используя несколько источников данных. Я достойных аналогов (даже платных) не нашел.

А кто работал с ReDash и Zeppelin в связке с CH, можете поделится опытом - как оно работает ? Буду признателен)

И на момент нашего переезда на кликхаус аналогов вообще не было, а коннектор для редэша я написал за полдня.

Google
Vladislav
05.04.2017
07:55:04
А redash умеет в jdbc?

Igor
05.04.2017
07:56:06
вот во что умеет https://redash.io/help-onpremise/setup/supported-data-sources-options-reqs.html (облачная) https://redash.io/help/aboutrd/aboutrd.html#supported_data_sources (селфхостед)

Vladislav
05.04.2017
07:57:06
О спасибо

Сейчас как раз выбираю, что лучше

Vladislav
05.04.2017
08:04:50
вроде бы у них облачная и селфхостед версии в плане источников данных не отличаются, наверно доку не обновляли давно. вот здесь есть весь список источников: https://github.com/getredash/redash/tree/master/redash/query_runner

Andrey
05.04.2017
08:22:07
Всем привет! Пытаюсь сделать MATERIALIZED VIEW типа AggregatingMergeTree, в SELECT'e при создание делаю countIfState(event='request') as request_count потом делаю SELECT sumMerge(request_count) FROM report и получаю DB::Exception: Illegal type AggregateFunction(countIf, UInt8) of argument for aggregate function sumMerge. Получается нельзя использовать countIfState и sumMerge ?

Рулон
05.04.2017
08:24:50
С дашбордами разобрались, а с ETL ? ) Есть идеи как из баз тянуть данные в CH?

Vladislav
05.04.2017
08:28:38
С дашбордами разобрались, а с ETL ? ) Есть идеи как из баз тянуть данные в CH?
не с КХ, а с другими базами, могу сказать, если есть возможность, лучше писать свое, ибо теущие инструменты вечно на грабли наступают

Kirill
05.04.2017
09:58:51
Привет! Подскажите пожалуйста, могу ли я изменить значение, возвращаемое аггрегатной функцией (например, countMerge()) при селекте из materialized view без вставки данных в исходную таблицу? Использую AggregatingMergeTree Судя по доке, "В таблицу, содержащую столбцы типа AggregateFunction невозможно вставить строчку обычным запросом INSERT, так как невозможно явно указать значение типа AggregateFunction. Вместо этого, для вставки данных, следует использовать INSERT SELECT с агрегатными функциями -State." Пробовал что-то нашаманить с INSERT SELECT, получил There is no default value for AggregateFunction data type

Andrey
05.04.2017
10:05:25
А вьюха эта смотрит на таблицу?

?Zloool?
05.04.2017
10:53:31
Добрый день! Есть пара платиновых вопросов, а именно: 1. Нужна таблица, в которой будет храниться статичный список емейлов + имен, какой движок использовать, mergetree? 2. В эту же таблицу нужно будет из текстового файла перегнать миллион-другой записей, как правильнее использовать инсерт? Пачками по сколькото штук или раз в секунду?

Igor
05.04.2017
10:54:33
1. TinyLog наверн > Типичный способ использования этой таблицы - это write-once: сначала один раз только пишем данные, а потом сколько угодно читаем.

?Zloool?
05.04.2017
10:59:21
Igor
05.04.2017
10:59:38
тогда может правда внешним словарем лучше

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