
Kirill
04.04.2017
12:15:55

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

Aleksey
04.04.2017
13:50:52

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. Существенных проблем нет.

Dig
04.04.2017
16:04:19

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

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

ptchol
04.04.2017
20:47:43

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

papa
04.04.2017
21:45:14

Mikhail
04.04.2017
21:48:21

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

Maksim
04.04.2017
22:24:58
все в рамках одной сети одного ДЦ

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

prll
04.04.2017
22:38:34

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 из консоли...

Maksim
04.04.2017
22:53:32

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

Google

Maksim
04.04.2017
22:57:51

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

Maksim
04.04.2017
23:01:45

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 был.

Maksim
04.04.2017
23:22:13

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

Maksim
04.04.2017
23:24:36

Vladimir
04.04.2017
23:24:58
Пхп еще однопоточный
То есть посмотри не проблема ли в генераторе нагрузки
Короче собирайте статистику по потреблению ресурсов и на генераторе
Поэтому тут и советовали взять консольный клиент и готовые tsv файлы. Еще сеть проверь, кстати. Перфом банальным

Maksim
04.04.2017
23:28:16
так прикольно)) просто привел данные к типу. 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

Mikhail
05.04.2017
08:42:29


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: сначала один раз только пишем данные, а потом сколько угодно читаем.

Kirill
05.04.2017
10:57:58

Alex
05.04.2017
10:58:33

?Zloool?
05.04.2017
10:59:21

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