
Kirill
17.08.2017
11:24:27
да, конечно

Evgeniy
17.08.2017
13:13:06

General
17.08.2017
13:34:51
И ещё: если делать SELECT на такой distributed таблице, туда попадают данные из этого буфера?

Google

Alexey
17.08.2017
15:41:55
https://twitter.com/paaleksey/status/898205950271737856


Alexey
17.08.2017
15:49:29
Прочекали все .bin файлики в директории distributed таблицы на всех нодах: на трёх нодах вообще папки пустые, но на одной скопилось достаточно много .bin файлов (за целую неделю). Я так понимаю, в идеале, они не должны копиться?
Олсо, в наименовании вложенных директорий записан юзер и ip адрес, это адрес источника данных?
Ну и самое главное — ни в одном из файлов не нашли "неподходящих" insert-ов, все указанные в запросе поля есть сейчас в текущих схемах (что в distributed, что в локальных).
Да, не должны накапливаться. Данные остаются на файловой системе только если их не удалось отправить.
Да, в имени директории записывается адрес, куда отправлять. Старые данные также могут остаться, если адрес перестал быть валидным.
> Ну и самое главное — ни в одном из файлов не нашли "неподходящих" insert-ов, все указанные в запросе поля есть сейчас в текущих схемах (что в distributed, что в локальных).
Возможно, что по логу сервера будет понятно, какой файл не удаётся отправить? Если нет, то попробуйте перенести в сторону некоторое количество файлов с начала по порядку их номеров.
> И ещё: если делать SELECT на такой distributed таблице, туда попадают данные из этого буфера?
Нет, не попадают.


General
17.08.2017
15:50:00
Спасибо за ответы.

Alexey
17.08.2017
15:50:23
По этому поводу есть новость: в последней stable версии, которая вышла вчера, появилась опция insert_distributed_sync. Если её выставить в 1, то данные в Distributed таблицу будут вставляться синхронно. Возможно, даже лучше было бы сделать этот вариант по-умолчанию.

General
17.08.2017
15:51:19
> Возможно, что по логу сервера будет понятно, какой файл не удаётся отправить?
Вот в том то и дело, что в логах сам файл не указывается, указывается только query.

Alexey
17.08.2017
15:51:20

Alexey
17.08.2017
15:51:56
Так мы и были одни из тех, что просили ?

General
17.08.2017
15:52:22

Alexey
17.08.2017
15:52:35
Теперь очень надеемся на английскую документацию на GraphiteMergeTree

Alex
17.08.2017
15:52:44

Alexey
17.08.2017
15:55:58

Ilya
17.08.2017
16:03:01

Google

Stas
17.08.2017
16:09:28
@milovidov_an а насчёт ченджлога может быть тоже где то зафиксировать? Что бы не перечитывать всю документацию раз в месяц

Lexa
17.08.2017
16:15:18
Привет всем. Настолько оправдано использование toStartOf... функций для группировки при создании временных рядов? Является ли создание экстра колонок лучшей альтернативой?

Andrew
17.08.2017
16:17:47

Lexa
17.08.2017
16:20:59
колонки такие есть. нужно саггрегировать данные по разным временным слотам. скажем по часовому слоту или по месяцу.

Andrew
17.08.2017
16:23:15
Ну так делаете одну колонку, не дублируя информации, и будет отлично работать toStart и другие функции с датой-временем

Alexey
17.08.2017
18:32:25

Lexa
17.08.2017
18:35:19
Спасибо, именно это и хотелось услышать.

Support
17.08.2017
18:42:47
Я тоже за changelog . Выходит много релизов , а что в них - одному Алексею Миловидову известно )) Да и судя по планам которые видел на семинарах по КликХаусу уже давно должен быть update и delete .

Alexey
17.08.2017
18:58:40
+1 к changelog

Alexandr
17.08.2017
19:03:52
+1 к changelog

Alex
17.08.2017
19:04:34
+1, было бы шикарно!

Рулон
17.08.2017
19:10:04
Help Code: 229, e.displayText() = DB::Exception: Query is too large (263512). max_query_size = 262144, e.what() =
Поменял в config.xml
не исправилось
сервер ребутил

Alexey
17.08.2017
19:11:53
Changelog в пути :)

Рулон
17.08.2017
19:13:49
Ой! Приятно ) Просили передать от коллег большое спасибо ) пол года прода без единой проблемы))

Shine
17.08.2017
19:51:09
Подскажите, произвольное партицирование в ближ время подоспеет ?:)

Google

Stas
17.08.2017
19:52:30

Alexey
17.08.2017
19:53:23

Shine
17.08.2017
19:55:43
Ну в середине осени уже неплохо!
Тут недолго осталось :)

Alex
17.08.2017
19:56:51
Прямо сейчас активно занимаюсь этой задачей.

Shine
17.08.2017
19:58:17
Скорейшего решения, для нас прям очень актуально

Alex
17.08.2017
20:41:33

Vladimir
17.08.2017
20:43:50
Кстати, какой у вас кейс - по какому выражению хотите партиционировать?
(сорри что врываюсь в вашу беседу) я помоему кстати про свой кейс рассказывал - хочу чистить данные меньше чем по месяцу - а конкретно у меня есть статистика из графита и стек трейсы, они где-то сжирают 20ГБ места в день на сервере после сжатия кликхаусом (при условии 4х серверов и distributed таблицы). Вот я хочу хранить 45 дней максимум, больше мне надо
потому что 2 месяца помещаются, но впритык
пока приходится дропать по партициям раз в два месяца )

Alex
17.08.2017
20:45:27
Ага, про вас помню :) Как раз интересно услышать побольше кейсов.
Так что если кто еще ждет произвольного партиционирования, тоже рассказывайте.

Vladimir
17.08.2017
20:52:10
еще была мысль под time-series данные тоже в общем по той же причине - чтобы удалять ненужные данные прям четко. Конкретно - сделать storage слой под посекундные данные, которые хранить например 2-4 дня
а потом грохать

Aliaksandr
17.08.2017
20:54:20
ну нам бы не помешало партиционирование по типу события (тип UInt* или Enum*) и месяцу, чтобы у разных событий могло быть разное время жизни. Например, какие-нибудь хиты хранить не больше месяца, действия пользователей - два месяца, а клики - полгода
я создавал похожий фиче реквест для alter table * drop key range - https://github.com/yandex/ClickHouse/issues/654 . Партиционирование позволило бы решить эту задачу немного по-другому

Vladimir
17.08.2017
21:00:10
удаление тоже нужно )
а то у нас есть отдельные товарищи которые любят прийти и сказать "ой, это нам нафиг не нужно"

Google

Alexey
17.08.2017
21:05:17

Aliaksandr
17.08.2017
21:12:43
и это медленнее, чем просто удалить папку с партишном )

Александр
17.08.2017
21:42:37
Ага, про вас помню :) Как раз интересно услышать побольше кейсов.
У нас данные растянуты по времени, но привязаны к пользователю. Очень часто получается так, что сотрудника увольняют и его данные не нужны больше в системе и их было бы не плохо удалять. Сейчас это планируем делать в лоб :) Хранить файл с идентификаторами удаленных/уволенных пользователей и отправлять на сервер с исключающим условием, либо подключать словарь и через dictionary движок исключать их из выборки. Конечно, можно удаленных и в сам КХ писать, но это не позволяет бизнес-логика ( Есть некоторые сложности (
Так же у нас есть некоторые типы эвентов, которые в дальнейшем не планируется хранить впринципе. Они нужны какой то определенный период времени. В качестве идентификатора типа эвента - строка.


Kirill
18.08.2017
05:13:33
У нас есть "странный" кейс с партишенами. У нас есть сырые данные и постпроцессинг который агрегирует данные в "отчеты" для пользователей, т.к. вливать данные напрямую долго и пользователи будут видеть разные данные, мы делаем create table tmp_*** as source_table заливаем в нее (или несколько таблиц) данные, делаем DETACH перемещаем файлы и делаем ATTACH в нужной таблице, это не очень удобно т.к. требует чтоб у воркера был доступ к файловой системе, да и вообще тот ещё костыль )

Александр
18.08.2017
05:15:52
Костыль тот еще, но мы подобными костылями страдаем )я имею ввиду пока не удалось избавиться от аггрегации

Stas
18.08.2017
06:41:38
Господа, а не планируется что то типа ораклового pivot?
Тк есть кейс когда нельзя использовать широкую таблицу - только узкую, а работать с широкой удобнее...

Дмитрий
18.08.2017
07:45:54
Доброе утро! Народ, вот хоть убейте! Мы не можим настроить реплицирование с шардированием 2х2.
Схему реплик прописали, зукипер прописали, с макросами не понятно.
На каждой ноде прописали в config.xml
<macros><shard>01</shard><replica>01</replica></macros>
с разными цифрами на каждой ноде. Пытаюсь создать таблицу
..............
) ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/normal_summing_sharded', '{replica}', event_date, (event_date, event_time, body_id), 8192);
Получаю
Received exception from server:
Code: 62. DB::Exception: Received from 10.254.122.232:9000. DB::Exception: No macro shard in config.
Что не так-то???

Kirill
18.08.2017
07:53:59
1) значение в replica должно быть уникальным для каждой машины (это идентификатор по которому можно понять что и куда нужно засинкать)
2) скорее всего у вас в конфиге выше есть
<macros incl="macros" optional="true" />

Alex
18.08.2017
08:08:46

Дмитрий
18.08.2017
08:15:32

Alexey
18.08.2017
08:23:04
Добрый день. А возможно как-нибудь попросить автора библиотеки
https://bitbucket.com/ppodolsky/clickhouse-python
при наличии желания и возможности, апнуть библиотеку добавлением узнавания всяких Nullable(*) полей или нижеперечисленную парочку ?
На данный момент стали нужны два типа, указанные в соотв. ошибках:
No field class for Nullable(UInt32)
No field class for Nullable(String)
Я конечно ща сам попробую, но там так всё красиво, боюсь испортить)

Evgeny
18.08.2017
09:04:23

Alexey
18.08.2017
09:05:43

Evgeny
18.08.2017
09:06:05
посмотрите вот этот pr https://github.com/Infinidat/infi.clickhouse_orm/pull/44

Alexey
18.08.2017
09:06:41
Спасибо, посмотрю!

Evgeny
18.08.2017
09:07:32
видимо какая то версия сломалась в python3. так то он работал без проблем в 2.7 и 3

Александр
18.08.2017
09:27:09
Так что если кто еще ждет произвольного партиционирования, тоже рассказывайте.
К слову о партиционировании. Сейчас приплыла задача для анализа видео-контента. Есть видео, есть зритель и нужно понимать какие участки видео самые неинтересные, самые просматриваемые и все такое. Какой процент видео просматривается в среднем и пр. И я так полагаю, что тут партиционирование хорошо сработало бы по идентификатору видео, а не по дате, т.к. по сути с такими эвентами дата и время роли не играет.

Evgeniy
18.08.2017
09:29:14
Привет! Загружаю TSV файл 4GB. max_memory_usage установлен 1GB.
cat /data/transactions | clickhouse-client --query="INSERT INTO stat.xxx FORMAT TabSeparated"
Получаю: Connection reset by peer while writing to socket
В логе: Memory limit (for query) exceeded: would use 1.04 GiB
Что нужно настроить, чтобы это работало?
Clickhouse вообще позволяет загружать файлы большие чем оператива, или их обязательно нужно делить на мелкие?

Google

Evgeny
18.08.2017
09:29:23


Александр
18.08.2017
09:33:02
вообще говоря, время может быть дополнительной переменной для анализа
с утра, вечером и в разные времена года разные участки одного и того же видео могут быть разные
Вообще время будет присутствовать отдельной колонкой, но это не приоритет. К тому же, что по одному видео может быть примерно такой объем данных. 1 видео, длительность в 3 минуты (180 строк на одного пользователя), с учетом сиков по видео может быть 200-250 на просмотор, в среднем 5-10 просмотров, есть кейсы когда видео смотрят в течение трех часов и делают конспекты, в таких кейсах может быть по 1000-3000 строк на один просмотр. Кол-во пользователей просматривающих видео от 100 до 40 000, кол-во видео в курсе в среднем 100 штук длительностью от 3 минут до 10 минут, в системе пока 10 курсов, но в ближайшем будущем курсов будет около 200 ) И да, видео контент будет обновляться и старые данные нужно будет выкидывать, т.к. их будет овер дохрена...у нас как бы есть 77 ТБ места, но...даже оно когда то кончится.
Поэтому держать данные по видео в одной партиции будет куда рациональней чем размазать данные по времени )


Evgeny
18.08.2017
09:37:42
может на каждый видеофайл по таблице?

Александр
18.08.2017
09:38:25
Идея хорошая, но не знаю как это сработает по факту

Evgeny
18.08.2017
09:39:23
а
длительность одного видео же час-два

Александр
18.08.2017
09:39:48
Нет, длительность видео от трех минут до десяти минут

Evgeny
18.08.2017
09:39:48
делайте для каждого видеофайла смещение временное
один день - один видеофайл
что-то в таком духе наверное можно
а может просто без всяких дополнительных ухищрений нормально будет работать

Александр
18.08.2017
09:40:58
Не по дням