
Tomazov
13.06.2018
17:35:28
Добрый день.
подскажите я переписал запрос, взял из
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/MergeTree/registerStorageMergeTree.cpp
————————-
ENGINE = ReplacingMergeTree(date, [sample_key], primary_key, index_granularity, [version_column])
————————-
на
————————-
ENGINE = ReplacingMergeTree
PARTITION BY toMonday(date)
ORDER BY primary_key
————————-
Вопрос:
1. как указать [version_column] - у меня это DateTime
2. что такое [sample_key]

lenar
13.06.2018
17:36:46

LeiDruid
13.06.2018
17:38:13

Vasiliy
13.06.2018
17:38:29
У нас таких случаев не было - главное для топика выставить replication factor, чтобы ноды синкались. И еще указать retention ms / bytes - тогда кафка будет удалять только старые данные.

Google

Vitaly
13.06.2018
17:38:32
Все таки транзакция более надежнее будет
Мне кажется

LeiDruid
13.06.2018
17:39:36
Да, из-за сбоев
если не прошляпить 2 сервера, например, из 3 - ничего никуда не теряется
У кафки есть подтверждение записи
Мы иногда можем копить под несколько лярдов сообщений в топике
Разумеется, размер хранения зависит от retention
Но никаких сложностей с размером очередей в кафке нет
формально, конечно, кафка - не mq, а mb
btw, даже если какая-то gc вычитала топик, сообщения-то никуда не деваются
Все равно лежат пока не настанет retention

lenar
13.06.2018
17:44:29

LeiDruid
13.06.2018
17:47:17
А вот, 2 сообщения выше

Google

LeiDruid
13.06.2018
17:47:59
mq обычно рассылает очередь, но не хранит её "на всякий пожарный", а кафка рассчитывает, что эти данные могут кому-нибудь понадобиться
Единственная сложность , с которой редко приходится сталкиваться - вычитывание с середины. Там либо костыли городить с двиганием оффсетом, либо с ретейном (пожертвовать частью данных), либо забить и читать с последнийх сообщений.

Vasiliy
13.06.2018
17:50:43
дааа, костыли, тьфу, питон скрипты для рассчета и записи нового офсета)

LeiDruid
13.06.2018
17:51:29
в целом для нас это редкий кейс
я бы сказал, крайне редкий

Vasiliy
13.06.2018
17:52:04
хотя они же добавили фичу time based offsets или как оно там

LeiDruid
13.06.2018
17:52:26
У нас в проде 1.0.1
ЕМНИП, там ещё нет такого
Хотя сейчас гляну
нигде в релиз-нотах такого нет, может, пока только планы

Andrey
13.06.2018
18:11:09
привет, а где users.xml обычно лежит?

Wolf
13.06.2018
18:13:15
Етц кликхаус
Как и все остальное

Andrey
13.06.2018
18:13:55
от души спасибо

Nikolai
13.06.2018
18:17:47

Tomazov
13.06.2018
18:20:15

Denis
13.06.2018
18:25:14
для поиска ( mysqlxx::BadQuery , Malformed packet , percona 5.7 )
set query_cache_type = on;
set global query_cache_type = on;
SYSTEM RELOAD DICTIONARIES
mysqlxx::BadQuery: Malformed packet (dwds1:3306), e.what() = mysqlxx::BadQuery
set query_cache_type = off;
set global query_cache_type = off;
SYSTEM RELOAD DICTIONARIES
Ok.

Vitaly
13.06.2018
18:49:29

Alexander
14.06.2018
06:51:37
Добрый день! Для задач аналитики использую limit by для ранжирования и фильтрации по рангу. Работает когда нужно отобрать скажем 3 максимальных показателя для каждой группы. Limit 3 by mygroup. Но как быть когда нужно отобрать значения для которых ранг находится в промежутке 3-10? т е хочется получить limit 3, 10 by mygroup. Мне это нужно чтобы отсекать крайние значения показателей. А использовать arrayEnumerateUniq не могу т к таблицы очень пухлые. И второе, иногда нужно завязывать логику отбора на конкретные значения ранга, типа каждые вторые в группе как-то особенно обработать. Т е меня бы очень выручила возможность не просто отфильтровать, а как-то получить ранг в явном виде.

Tima
14.06.2018
08:12:53

Google

Alexander
14.06.2018
08:13:57
Может туплю, но как его построить в явном виде?

Tima
14.06.2018
08:25:08

Andrey
14.06.2018
08:35:19
Накину вчерашний вопрос: в документации есть заметка, что можно выполнять параллельные запросы на вставку, но ведь данные лучше заливать последовательно, нет? (вставка идет в distributed таблицу)

Ivan
14.06.2018
08:35:46


Vitaly
14.06.2018
08:36:18
SELECT
urlId as id,
any(url) as url, --вот эта строчка
COUNT(*) as count
FROM errors
WHERE
urlId = 7011786810972997742
GROUP BY urlId
ORDER BY count DESC
LIMIT 10
изза any(url) запрос выполняется в два раза дольше
есть идеи, как это ускорить?

Alexander
14.06.2018
08:45:23

Ivan
14.06.2018
08:48:34
а какие у вас объемы после limit by получаются?

Alexander
14.06.2018
08:51:19
После limit by в теории влезает в память

Tima
14.06.2018
08:55:57
Никто не сталкивался с такой проблемой
https://github.com/yandex/ClickHouse/issues/2384?_pjax=%23js-repo-pjax-container
?

Дмитрий
14.06.2018
09:34:44

Stepan
14.06.2018
09:36:36
for i in iemk_diagnosis_mart_tmp*; do cat $i | TZ=$(cat /etc/timezone) clickhouse client --query="INSERT INTO iemk_mart_tmp FORMAT TabSeparated"; rm $i; done
можно и в параллель

Дмитрий
14.06.2018
09:37:30

Andrey
14.06.2018
09:38:10

Stepan
14.06.2018
09:39:57
https://unix.stackexchange.com/questions/103920/parallelize-a-bash-for-loop

Andrey
14.06.2018
09:41:15
Я в курсе что это такое, у Вас там нет &

Stepan
14.06.2018
09:44:02
у меня грузится over 100 файлов
если я просто амперсанд добавлю - может быть бобо

Google

Stepan
14.06.2018
09:44:49
лучше сделать очередь и обработку ошибок отдельно

Andrey
14.06.2018
09:45:13
Я так понимаю тут в другом фишка: клиент не ждет вставки данных, верно?
Если добавить & в том скрипте, то да, почти fork бомба)

Stanislav
14.06.2018
09:46:51
у меня получалось 4 потока на 2-ядерный узел реплики. При 6 начинало тормозить
Больше не решился

Andrey
14.06.2018
09:47:44
Тут вопрос скорее не в том как, а в том нормально ли это делать вставки если у нас сначала зальется следующий час, а затем текущий? Т.е. очередность данных

Tima
14.06.2018
10:25:36

Andrey
14.06.2018
10:26:35

Victor
14.06.2018
10:27:18
в доке к mergetree вроде б написано, что можно писать в несколько потоков и будет кратное ускорение.
Это в TinyLog нельзя фигачить мультипоточно

Tima
14.06.2018
10:33:32
Почему в один?
Потому что пишу из многих источников в очередь, хоть по одной записи. А из очереди - в один поток пачками больше 1к записей. Так пачка накапливается больше, соответствено инсерт один, запись на диск одна, мердж один (почти)

Andrey
14.06.2018
10:34:57
Собственно тема с буферизацией логична, у нас так же. Но вот если есть файлы по 100к записей в упорядоченном по времени виде и мы хотим вставлять их параллельно, все будет ок?

Tima
14.06.2018
10:42:22
В любом случае смотрите на ваши данные и экспериментируйте. И помните, после вставки может прийти фоновый мерж и немного поломать сервер

Andrey
14.06.2018
10:45:18
Т.е. если нет одинковых значений для ключей, можно и в параллель?
Ну тут дело в том, что железо простаивает, а мы ждем. Поэтому и хочется нагрузить

Nikolai
14.06.2018
10:47:38

Victor
14.06.2018
10:49:06
господа, а какой самый простой вариант из локального mysql заливать данные в удалённый КХ?
скрипты писать на известном ЯП?
tsv экспортить?

Гаврилов
14.06.2018
10:50:18
curl )

Tomazov
14.06.2018
10:54:00
Т.е. если нет одинковых значений для ключей, можно и в параллель?
о интересная информация!
что можно поломать сервер, если вставлять одинаковые данные из разных источников ?
у меня идут вставки с разных источников в ReplacingMergeTree по 10M (30К строк) каждую минуту [генерирую локальный буфер на источнике] и там 100% есть дублирующие значения, на сколько это всё опасно?
может мне делать паралельные вставки в таблицу Buffer по 300 строк (у меня 100 потоков с одного источника) ?

Google

Tomazov
14.06.2018
11:04:36
Когда TrivialBuffer будет в стабильной версии?

Andrey
14.06.2018
11:07:04
Всем спасибо за информацию

Alexey
14.06.2018
11:50:59

Victor
14.06.2018
11:51:19

Tima
14.06.2018
13:16:00

Alexey
14.06.2018
15:40:38
ClickHouse Meetup Lite в Берлине:
https://www.meetup.com/ClickHouse-Meetup-Berlin/events/249833957/

Aleksandr
14.06.2018
16:09:37
А видео будет?

Андрэ
14.06.2018
16:14:23
в смысле - присоединяюсь к вопросу)

Andrey
14.06.2018
16:15:55

Alexey
14.06.2018
18:18:19

Aleksandr
14.06.2018
18:19:27
Это бесплатная конференция? (я не могу посмотреть потому что на сайте странная защита от спама)

Alexey
14.06.2018
18:19:54
Можем в Дубай устроить )
А там сколько примерно заинтересованных - людей, компаний? По посещаемости сайта идёт где-то между Эстонией и Бельгией.