
Василий
11.07.2017
08:54:29
привет. ведь приконектиться к серверу с кликхаусом дефолтная авторизация: ?username=default&password= так?


Roman
11.07.2017
09:01:39
Повторю вопрос, вдруг тот, кто знает вчера пропустил.
1) хотелось бы понять насколько оптимальна запись в AggregatingMergeTree, если хочется собирать данные по часам - везде в примерах по датам
2) И насколько там адекватно использовать GROUP BY во вложенных запросах и в целом вложенные запросы,
Например:
таблицы примерно так соотносятся: на каждую запись в Init в районе 10-15 записей в Event и 10-15 записей в Flow c одним sessionId
metricN - uint8/16, ufa - фиксированная стринга
CREATE MATERIALIZED VIEW default.AggregatedEvent
ENGINE = AggregatingMergeTree(date, (hour, eventId, suid, date), 8192)
AS SELECT
toStartOfHour( toDateTime( time ) ) hour
eventId,
suid,
any(date) date,
countState() count,
uniqState(ufa) AS unique,
avgState(metric1) AS metric1,
avgState(metric2) AS metric2,
avgState(metric3) AS metric3
FROM (
SELECT sessionId, time, eventId, date, metric1, metric2, metric3 FROM
(
SELECT sessionId, time, eventId, date FROM Event
) ANY LEFT JOIN (
SELECT sessionId, avg(metric1) metric1, avg(metric2) metric2, avg(metric3) metric3 FROM Flow
GROUP BY sessionId
) USING sessionId
) ANY LEFT JOIN (
SELECT id sessionId, suid, ufa FROM Init
) USING sessionId
GROUP BY hour, eventId, suid;


Василий
11.07.2017
09:03:41
Повторю вопрос, вдруг тот, кто знает вчера пропустил.
1) хотелось бы понять насколько оптимальна запись в AggregatingMergeTree, если хочется собирать данные по часам - везде в примерах по датам
2) И насколько там адекватно использовать GROUP BY во вложенных запросах и в целом вложенные запросы,
Например:
таблицы примерно так соотносятся: на каждую запись в Init в районе 10-15 записей в Event и 10-15 записей в Flow c одним sessionId
metricN - uint8/16, ufa - фиксированная стринга
CREATE MATERIALIZED VIEW default.AggregatedEvent
ENGINE = AggregatingMergeTree(date, (hour, eventId, suid, date), 8192)
AS SELECT
toStartOfHour( toDateTime( time ) ) hour
eventId,
suid,
any(date) date,
countState() count,
uniqState(ufa) AS unique,
avgState(metric1) AS metric1,
avgState(metric2) AS metric2,
avgState(metric3) AS metric3
FROM (
SELECT sessionId, time, eventId, date, metric1, metric2, metric3 FROM
(
SELECT sessionId, time, eventId, date FROM Event
) ANY LEFT JOIN (
SELECT sessionId, avg(metric1) metric1, avg(metric2) metric2, avg(metric3) metric3 FROM Flow
GROUP BY sessionId
) USING sessionId
) ANY LEFT JOIN (
SELECT id sessionId, suid, ufa FROM Init
) USING sessionId
GROUP BY hour, eventId, suid;
я б рад тебе помочь, Роман. Но я к своему кликхаусу даже присоединиться не могу


Kirill
11.07.2017
09:03:41
привет. ведь приконектиться к серверу с кликхаусом дефолтная авторизация: ?username=default&password= так?
смотря каким клиентом, если просто по http то можно почитать тут https://clickhouse.yandex/docs/en/single/#http-interface
Using HTTP Basic Authentication. Example:
echo 'SELECT 1' | curl 'http://user:password@localhost:8123/' -d @-
In the ‘user’ and ‘password’ URL parameters. Example:
echo 'SELECT 1' | curl 'http://localhost:8123/?user=user&password=password' -d @-
Using ‘X-ClickHouse-User’ and ‘X-ClickHouse-Key’ headers. Example:
echo 'SELECT 1' | curl -H "X-ClickHouse-User: user" -H "X-ClickHouse-Key: password" 'http://localhost:8123/' -d @-

Google

Василий
11.07.2017
09:04:19
мне надо чтобы приложение с ним работало. порт 8123 открыт на сервере.
стучусь на tcp://server:8123/?username=default&password=

Roman
11.07.2017
09:05:19

Slach
11.07.2017
09:05:23
может http а не tcp ? ;)

Kirill
11.07.2017
09:05:26
на 9000 по tcp стучитесь

Василий
11.07.2017
09:06:17
в ответ: :8123: connectex: No connection could be made because the target machine actively refused it.
файервол для порта открыт

Tima
11.07.2017
09:10:37

Василий
11.07.2017
09:11:24

Virus
11.07.2017
09:11:45
на машине с кликхаусом сделайте netstat -anp|grep click

Google

Василий
11.07.2017
09:12:32
на машине с кликхаусом сделайте netstat -anp|grep click
sudo netstat -anp|grep click
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 17784/clickhouse-se
tcp 0 0 127.0.0.1:9009 0.0.0.0:* LISTEN 17784/clickhouse-se
tcp 0 0 127.0.0.1:8123 0.0.0.0:* LISTEN 17784/clickhouse-se
tcp6 0 0 ::1:9000 :::* LISTEN 17784/clickhouse-se
tcp6 0 0 ::1:9009 :::* LISTEN 17784/clickhouse-se
tcp6 0 0 ::1:8123 :::* LISTEN 17784/clickhouse-se

Virus
11.07.2017
09:12:47
у вас кликхаус только локалхост слушает
поменяйте в конфиге адрес на 0.0.0.0

Василий
11.07.2017
09:13:26
а параметром ему при старте сказать нельзя?

Name
11.07.2017
09:24:10

Mike
11.07.2017
10:38:55
Глупый вопрос к разработчикам: а что мешает делать апдейты для типов данных фиксированной длины, типа U/IntXY или FixedString? Можно же, в теории, прямо в файлике, в одном и ровно одном месте поменять и евент в реплики отправить. Медленно? Да вроде бы быстро, опять же в теории, особенно если редко использовать.

Andrey
11.07.2017
10:40:04

Mike
11.07.2017
10:41:56
Эээ, тогда колонки для апдейтов помечать и не сжимать :)


Александр
11.07.2017
11:09:53
Ох, не знаю уже что делать. Проблема следующая: отправляю csv файл зажатый на сервер КХ (разные ноды, разные версии), судя по iftop и tcpdump на сервере и клиенте пакеты ходят и все ок. КХ принимает данные и пишет строчку в логе, что запрос поступил и все такое. Далее все просто висит. Клиент тупо чего то ждет и по таймауту отваливается. Причем этот же клиент в другом проекте работает отлично с теми же серверами КХ. Окружение одинаковое, с сетью проблем нет. Может быть со стороны КХ что он задумался или еще чего?
Причем во время "зависания" если разоврать соединение, то КХ ошибок не выдает и данные доступны в таблице для чтения. В процессе "зависания" же данные для чтения недоступны.
Причем последний пакет перед зависанием судя по tcpdump от КХ такой:
14:07:37.454475 IP clickhouse-0.8123 > curs-handlers-0.55638: Flags [.], ack 277894, win 1452, options [nop,nop,TS val 1436621072 ecr 1926019], length 0
Ну и на клиенте соответственно такой же пакет имеется
Хотя лог tcpdump немного отличается на клиенте и сервере.
Сервер
14:07:37.454464 IP curs-handlers-0.55638 > clickhouse-0.8123: Flags [P.], seq 277188:277894, ack 26, win 229, options [nop,nop,TS val 1926019 ecr 1436621072], length 706
14:07:37.454475 IP clickhouse-0.8123 > curs-handlers-0.55638: Flags [.], ack 277894, win 1452, options [nop,nop,TS val 1436621072 ecr 1926019], length 0
Клиент
14:07:37.454429 IP curs-handlers-0.55638 > 10.20.121.4.8123: Flags [P.], seq 277188:277894, ack 26, win 229, options [nop,nop,TS val 1926019 ecr 1436621072], length 706
14:07:37.454437 IP 10.20.121.4.8123 > curs-handlers-0.55638: Flags [.], ack 269948, win 1428, options [nop,nop,TS val 1436621072 ecr 1926019], length 0
14:07:37.454521 IP 10.20.121.4.8123 > curs-handlers-0.55638: Flags [.], ack 275740, win 1428, options [nop,nop,TS val 1436621072 ecr 1926019], length 0
14:07:37.454566 IP 10.20.121.4.8123 > curs-handlers-0.55638: Flags [.], ack 277894, win 1452, options [nop,nop,TS val 1436621072 ecr 1926019], length 0
Судя по логу видно, что парочки пакетов не хватает.
Может быть такое, что клиент по факту пакеты от КХ получил, но сервер КХ не получил ответа о том, что пакеты дошли и ждет?


Dmitry
11.07.2017
11:26:31
Новые возможности:
* Распределённые DDL (например, CREATE TABLE ON CLUSTER)
* Реплицируемый запрос ALTER TABLE CLEAR COLUMN IN PARTITION
* Движок таблиц Dictionary (доступ к данным словаря в виде таблицы)
* Движок баз данных Dictionary (в такой базе автоматически доступны Dictionary-таблицы для всех подключённых внешних словарей)
* Возможность проверки необходимости обновления словаря путём отправки запроса в источник
* Qualified имена столбцов
* Квотирование идентификаторов двойными кавычками
* Сессии в HTTP интерфейсе
* Запрос OPTIMIZE Replicated таблицы теперь можно выполнять не только на лидере
Обратно несовместимые изменения:
* Убрана команда SET GLOBAL
Мелочи:
* Теперь после получения сигнала в лог печатается полный стектрейс
* Ослаблена проверка на количество повреждённых/лишних кусков при старте (было слишком много ложных срабатываний)
Исправления:
* Исправлено залипание плохого соединения при вставке в Distributed таблицу
* GLOBAL IN теперь работает при запросе из таблицы Merge, смотрящей в Distributed
* Теперь правильно определяется количество ядер на виртуалках Google Compute Engine
* Исправления в работе executable источника кэшируемых внешних словарей
* Исправлены сравнения строк, содержащих нулевые символы
* Исправлено сравнение полей первичного ключа типа Float32 с константами
* Раньше неправильная оценка размера поля могла приводить к слишком большим аллокациям
* Исправлено падение при запросе Nullable столбца, добавленного в таблицу ALTER-ом
* Исправлено падение при сортировке по Nullable столбцу, если количество строк меньше LIMIT
* Исправлен ORDER BY подзапроса, состоящего только из константных значений
* Раньше Replicated таблица могла остаться в невалидном состоянии после неудавшегося DROP TABLE
* Алиасы для скалярных подзапросов с пустым результатом теперь не теряются
* Теперь запрос, в котором использовалась компиляция, не завершается ошибкой, если .so файл повреждается
можете подсказать, что такое "Qualified имена столбцов"?


papa
11.07.2017
11:27:29
table.column

Alex
11.07.2017
11:32:45
Кстати к вопросу о распределённых DDL. В моём случае не взлетело - на всех серверах distributed_ddl установлен, при попытке прогнать запрос, клиент висит 2 минуты и отваливается. В зукипере эти транзакции видны, но никто их не применяет.

Pavel
11.07.2017
11:34:09
Есть вопросик по Grafana для CH от Vertica
недавно поставили актуальную версию из grafana.net и почему-то не могу никак сменить "Table transformation: Time series to rows" на "Table".

Google

Pavel
11.07.2017
11:35:03
оно сбрасывается обратно каждый раз :(

Slach
11.07.2017
11:35:22

Александр
11.07.2017
11:38:37
Хм, к слову о своей проблеме. На маленьких объемах данных все ок, например если писать 100 строк через файл, а если писать 10к строк через файл, то все, начинает висеть. Может быть проблема с фрагментацией пакетов?

Pavel
11.07.2017
11:42:20
@BloodJazMan сейчассс...

Александр
11.07.2017
11:51:25
Прикольно. Файл больше 1 мегабайта "зависает". Попробую на физических тачках, а не в виртуалках

Pavel
11.07.2017
11:57:15
заделал баг для Vertica/Grafana: https://github.com/Vertamedia/clickhouse-grafana/issues/11

Александр
11.07.2017
12:29:44
А Clickhouse как то обрабатывает заголовок Expect: 100-Continue ?

Igor
11.07.2017
12:57:38
подскажите плиз, а можно ли nullable тип кастануть к non-nullable?
Обычный CAST(..., 'String') выдает Cannot convert data from a nullable type to a non-nullable type
пытаюсь сделать приведение Nullable(String) типа к типу String при создании MaterializedView

Roman
11.07.2017
13:02:33
coalesce( .., '' ) не помогает?

Igor
11.07.2017
13:03:42
спасибо, помогло. не знал что coalesce() появился

Roman
11.07.2017
13:07:15
а вы вьюхи по датам тоже делаете?

Igor
11.07.2017
13:11:38
А зачем? Если дата не нужна - можно же не включать ее в PK, по логике

Roman
11.07.2017
13:19:44
у вас AggregatingMergeTree?
ну вы же по каким-то срезам временным агрегируете?

Artem
11.07.2017
14:15:39
Привет
Помогите с установкой и запуском плиз
Поставил на убунту, но потом наткнулся на такую информацию, что можно запустить на винде через какой то docker
Что это такое и как его запустить

Google

papa
11.07.2017
14:18:51
а вы пробовали доку почитать?

Artem
11.07.2017
14:19:38
,Да, в официальной доке кликхауса про это ничего нет

Pavel
11.07.2017
14:19:50
скорее вопрос про что такое Docker

Artem
11.07.2017
14:19:57
Только на юптере
Хочу на винде кликхаус поднять, помогите пжс

Pavel
11.07.2017
14:20:35
ну а гугл на что, простите?
https://www.docker.com/
официальный сайт проекта
Get Docker, в самом верху
https://www.docker.com/docker-windows

Artem
11.07.2017
14:40:37
Установил. В мануале написано что он сам запустится и в трее появится значек с китом, но у меня он не запустился, поиск по приложениям тоже не нашел (
Как его руками найти и стартануть?

Slach
11.07.2017
14:41:31
у тебя Windows 10 ?

Artem
11.07.2017
14:41:39
Да
Права пользователя

Slach
11.07.2017
14:43:17
тогда у тебя скорее всего ничего не поставилось...
Hyper-V надо разрешить в компонентах Windows

Vladimir
11.07.2017
14:44:28
Всем привет. У нас в одной таблице мы изменяем некоторые данные (CollapsingMergeTree). Ради оптимизации хранения данных мы вынесли изменямые поля в отдельную таблицу, а неизменяемые оставили в другой. Для того, чтобы схлопыпалось (и как следствие дублировалось) меньше полей. Есть ли в этом смысл, или стоит все же использовать одну CollapsingMergeTree-таблицу?

Artem
11.07.2017
14:44:29
Хайпер в уже запускал, есть у меня
Когда виртуалку запускаю ввожу логин пароль локального админа. Видимо и докер нужно так же запускать из под админа, но где его найти не понятно

Google

Artem
11.07.2017
14:47:17
Нашел ?

Igor
11.07.2017
14:50:37
@kraynenko не, я вот щас попробовал колонку Date сделать просто одним значением и не включать в PK для AggregateMergeTree, чтобы сделать предгруппировку в 300 млн таблице, работает отлично. То есть не обязательно над датами это делать, можно по чему угодно.

Alex
11.07.2017
15:39:49
Подскажите, пожалуйста, а время возникновения события можно класть в первичный ключ (речь о тысячах эвентов в секунду), или это сильно по performance бахнет?

Tima
11.07.2017
16:31:22

Kirill
11.07.2017
16:35:31

Alex
11.07.2017
16:46:12

Roman
11.07.2017
16:49:45
В прошлый раз, когда я поднял этот вопрос, мнения разделились, имеет ли это смысл.
Мы тоже перед таким выбором стоим )

Vladimir
11.07.2017
17:49:38
Может кто сталкивался
Linux OOM killer под наргузкой прибивает КХ
...
[357455.218075] Killed process 7326 (clickhouse-serv) total-vm:48389456kB, anon-rss:30015008kB, file-rss:0kB
[357456.127546] Killed process 7328 (clickhouse-serv) total-vm:48389456kB, anon-rss:30015496kB, file-rss:0kB
[357457.726902] Killed process 7372 (clickhouse-serv) total-vm:48389456kB, anon-rss:30015604kB, file-rss:0kB
[357460.421496] Killed process 7384 (clickhouse-serv) total-vm:48389456kB, anon-rss:30016480kB, file-rss:4kB
[357592.325954] Killed process 7452 (clickhouse-serv) total-vm:42034508kB, anon-rss:29854968kB, file-rss:0kB
Можно как-то ограничить потребление памяти, ну типа 80%
Я в линуксе не очень :)