@clickhouse_ru

Страница 557 из 723
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]

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
формально, конечно, кафка - не mq, а mb
в чем разница между брокером и очередью? тем что рассылает?

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
от души спасибо

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.

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

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

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

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
можно пронумеровать ранг с помощью тетаджоина. Это непроизводительно, но работает всегда)
Т е делаем ещё один селект с нужной группировкой и сортировкой, нумеруем с помощью rowNumberInAllBlocks, и прикручиваем к исходному по группе (ключу группы)? Интересует чем нумеровать...

Ivan
14.06.2018
08:48:34
Т е делаем ещё один селект с нужной группировкой и сортировкой, нумеруем с помощью rowNumberInAllBlocks, и прикручиваем к исходному по группе (ключу группы)? Интересует чем нумеровать...
если в КХ есть подходящая функция, то лучше ее брать. В 1с, например, я просто беру количество записей, показатель которых больше текущей строки это и будет ранг (в силу ограниченности языка запросов)

а какие у вас объемы после 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
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
Тут вопрос скорее не в том как, а в том нормально ли это делать вставки если у нас сначала зальется следующий час, а затем текущий? Т.е. очередность данных
По моему опыту лучше всего: - вставлять в один поток - буферизировать данные где-нибудь в очереди или базе

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
Собственно тема с буферизацией логична, у нас так же. Но вот если есть файлы по 100к записей в упорядоченном по времени виде и мы хотим вставлять их параллельно, все будет ок?
Всё будет зависеть от того, нет ли в между пачками одинаковых дат (например каждый поток вставляет данные от разных источников)

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

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

Ну тут дело в том, что железо простаивает, а мы ждем. Поэтому и хочется нагрузить

Nikolai
14.06.2018
10:47:38
Накину вчерашний вопрос: в документации есть заметка, что можно выполнять параллельные запросы на вставку, но ведь данные лучше заливать последовательно, нет? (вставка идет в distributed таблицу)
В несколько потоков заливать можно. До какого-то момента при увеличении числа потоков будет увеличение скорости записи. Тут, видимо, основное узкое место - запись на диск. SSD могут записывать в несколько потоков параллельно не мешая друг другу.

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
Всем спасибо за информацию

Victor
14.06.2018
11:51:19
select * from mysql()
не поможет, разные хосты и туннель не прокинуть

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
в смысле - присоединяюсь к вопросу)

Alexey
14.06.2018
18:18:19
А видео будет?
Видео, скорее всего - нет.

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

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

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