@clickhouse_ru

Страница 415 из 723
Kirill
08.02.2018
12:54:12
тоже самое

Артемий
08.02.2018
12:55:22
Так. Получается, что если я ставлю в первый раз "1". Затем "-1". Он заменит перевую строку. Что мне теперь вставить, чтобы заменить последнюю вставленную?

Kirill
08.02.2018
12:56:37
1

хотя нет )

Google
Артемий
08.02.2018
12:56:55
Менять 1/-1?

> Здесь Sign - столбец, содержащий -1 для "старых" значений и 1 для "новых" значений. - терминологию не могу понять (

Изначально я подумал, что он сам меняет Sign на -1 при устаревании данных пок какому-то признаку. Но я ошибался.

Kirill
08.02.2018
12:58:13
Я туплю сегодня что-то

одинаковый ключ + строки с Sign = 1 и Sign = -1 просто удалят строку, а новую пишете отдельно

Например мы пишем все события с sign = 1, если нам нужно их "затереть" делаем INSERT INTO (..., sign) events SELECT ..., -1 FROM events

после чего пишем новые с sign=1

Артемий
08.02.2018
13:03:15
Вроде понял, спасибо

Alexey
08.02.2018
13:54:05
Встречался ли кто-то с проблемой потери строк при вставке? Есть самописный сишный демон, который читает сислог, собирает его в батчи (100к), и отправляет в кликхаус по HTTP (INSERT ... FORMAT Values). Грубо говоря, лог показов, сырой. Есть еще сгруппированный лог показов, который льется в мускуль. Так вот, иногда бывает, что они не совпадают по количеству за сутки, дельта порядка сотен тысяч строк (иногда 50к, иногда 400к) при 200 млн за сутки. В логах ни у демона, ни у кликхауса ничего по этому поводу нет. Но! Когда берешь сислог за этот день (он отдельно еще складируется), и заливаешь его руками в соседнюю таблицу - совпадает. То есть, единственное куда грешить - это заливка данных. Таблица ReplicatedMergeTree. Много селектов и записи данных, процы и диски загружены по самое не балуй, но в репликации ошибок нет, работает без сбоев, селекты селектятся быстро. В новогодние праздники не было "ни единого разрыва", а перед новым годом почти каждый день. То есть грешу на высокую нагрузку, но критических значений железо вроде не превышает, в логах пусто. Обещают новые мощные серваки, но пока их нет, а проблема есть. Может ли такое быть, что демон отправил INSERT, КХ ему ответил "200 OK", но в результате каких-то затупов zookeeper отвалился по таймауту (такое иногда проскакивает), и поэтому данные не вставились?

Alexey
08.02.2018
13:58:38
Встречался ли кто-то с проблемой потери строк при вставке? Есть самописный сишный демон, который читает сислог, собирает его в батчи (100к), и отправляет в кликхаус по HTTP (INSERT ... FORMAT Values). Грубо говоря, лог показов, сырой. Есть еще сгруппированный лог показов, который льется в мускуль. Так вот, иногда бывает, что они не совпадают по количеству за сутки, дельта порядка сотен тысяч строк (иногда 50к, иногда 400к) при 200 млн за сутки. В логах ни у демона, ни у кликхауса ничего по этому поводу нет. Но! Когда берешь сислог за этот день (он отдельно еще складируется), и заливаешь его руками в соседнюю таблицу - совпадает. То есть, единственное куда грешить - это заливка данных. Таблица ReplicatedMergeTree. Много селектов и записи данных, процы и диски загружены по самое не балуй, но в репликации ошибок нет, работает без сбоев, селекты селектятся быстро. В новогодние праздники не было "ни единого разрыва", а перед новым годом почти каждый день. То есть грешу на высокую нагрузку, но критических значений железо вроде не превышает, в логах пусто. Обещают новые мощные серваки, но пока их нет, а проблема есть. Может ли такое быть, что демон отправил INSERT, КХ ему ответил "200 OK", но в результате каких-то затупов zookeeper отвалился по таймауту (такое иногда проскакивает), и поэтому данные не вставились?
200 ОК при вставке в ReplicatedMergeTree возвращается только после записи пачки данных в файловую систему и регистрации этого куска данных в ZooKeeper. От нагрузки не может зависить. Можно подумать над граничными случаями - если при вставке разорвалось соединение и статус неизвестен - клиент должен повторить вставку, но не повторяет?

Alexey
08.02.2018
14:00:53
наоборот, дельта всегда в плюсе, демон заливаешь лишнего

то есть дублей заливает

будет ли надежнее вставка данных, если HTTP заменить на какую-то сишную либу? Видел вроде, есть такие

Google
Jen
08.02.2018
14:07:19
автоудаление партиций чисто теоритически может появиться?

Kirill
08.02.2018
14:09:34
Если сделать что-то вроде постгресового bgworker то можно будет много хорошего понаписать для работы в фоне

Я вот такой штукой удаляю https://github.com/kshvakov/clickhouse-partition-cleaner

Alexey
08.02.2018
14:10:50
наоборот, дельта всегда в плюсе, демон заливаешь лишнего
Тогда нужно проверять корректность вставки после получения ответа 500 или неизвестного статуса. В этом случае надо повторить вставку, отправив точно такую же пачку данных (с тем же самым порядком строк). Повторную вставку можно сделать на любую реплику.

автоудаление партиций чисто теоритически может появиться?
Этого пока нет в roadmap-е. Решаем скриптами в cron-е.

Alexey
08.02.2018
14:14:48
Тогда нужно проверять корректность вставки после получения ответа 500 или неизвестного статуса. В этом случае надо повторить вставку, отправив точно такую же пачку данных (с тем же самым порядком строк). Повторную вставку можно сделать на любую реплику.
И если этот блок вставился в первый раз, то он второй раз отбросится как дубль, главное чтобы пачка была точно такая же, да? А что по поводу либы, например, https://github.com/artpaul/clickhouse-cpp, стоит попробовать вместо HTTP?

Jen
08.02.2018
14:15:18
нет, не в два

у меня из 20 полей во вьюшке всего 4

Jen
08.02.2018
14:16:19
для интереса попробую через скрипт подготавливать данные извне и складировать в другую таблицу :)

т.е. вытаскивать из КХ, и ложить в него же

Alexey
08.02.2018
14:18:25
И если этот блок вставился в первый раз, то он второй раз отбросится как дубль, главное чтобы пачка была точно такая же, да? А что по поводу либы, например, https://github.com/artpaul/clickhouse-cpp, стоит попробовать вместо HTTP?
Существенная разница может быть, если например, тормозит форматирование данных в TSV или CSV перед отправкой по HTTP. Это довольно типично, если надо форматировать дату-с-временем, float-ы, правильно эксейпить строки. Посмотрите perf-ом - если на стороне клиента тратится время на форматирование, то использование нативного протокола даст преимущество.

Jen
08.02.2018
14:41:15
Там и пишется в 2 раза больше
я похоже налажал с тестами, две вьюшки было

Pavel
08.02.2018
14:52:11
Как посчитать число уникальных строк в таблице?

Irina
08.02.2018
14:55:13
select uniq(*) from table_name

Alexey
08.02.2018
14:56:06
uniqExact - точно и медленно, uniq - неточно и быстро

Google
Alexey
08.02.2018
14:56:20
там еще всякие есть, посмотрите в доке

Alexandr
08.02.2018
15:03:06
"При обновлении кластера, на время, когда на одних репликах работает новая версия сервера, а на других - старая, репликация будет приостановлена и в логе появятся сообщения вида unknown parameter 'shard'. Репликация продолжится после обновления всех реплик кластера." Наткнулись на это при обновлении версии на 1.1.54342. Есть ли более детальное описание/коммит, объясняющий первопричину? Есть ли другой способ всё таки сделать rolling update?

Alexey
08.02.2018
15:13:43
Alexandr
08.02.2018
15:20:00
спасибо!

Ivan
08.02.2018
18:03:51
https://yandex.com/blog/clickhouse/clickhouse-community-meetup-in-beijing-on-january-27-2018

Pika
08.02.2018
20:51:16
Почему так вышло, что консольный клиент по Ctrl + C закрывает клиент, а не по Ctrl + D?

Stanislav
09.02.2018
05:50:44
Почему не по Ctrl-D?

Вполне закрывает

Alexander
09.02.2018
06:43:37
Почему так вышло, что консольный клиент по Ctrl + C закрывает клиент, а не по Ctrl + D?
тоже с этим сталкивался, не очень удобно. Пытаешься прервать запрос, а он прерывает его и выходит из клиента. Было бы лучше сделать выход из клиента только по Ctrl+D

Pika
09.02.2018
06:45:28
@AlexanderMillin Бинго! @kshvakov Но там же libreadline. Процесс = запрос, а EOF = выйти.

Артемий
09.02.2018
07:02:49
Есть в CH что-то вроде EXPLAIN?

Tima
09.02.2018
07:11:41
Есть в CH что-то вроде EXPLAIN?
Нет, есть только возможность в логе сервера увидеть стадии выполнения запроса

Артемий
09.02.2018
07:14:39
Как эти логи можно получить через консоль или http запрос? (tabix их получает)

Igor
09.02.2018
07:26:56
нет

Tima
09.02.2018
07:33:59
Артемий
09.02.2018
07:33:59
Tabix их получает. Я не знаю через http или консольный клиент, вполне вероятно, что через http.

Google
Артемий
09.02.2018
07:34:30
Имелось ввиду, как через клиент консоль (не на сервере)

> Время выполнениет и число просмотренных строк

Вопрос снят, данные возвращаются в каждом запросе в FORMAT JSON в параметре "statistics"

Ilya
09.02.2018
08:19:11
Привет всем, а на сколько старая дока по clickhouse на офф сайте?

Артемий
09.02.2018
08:21:11
Все базовые понятия там хорошо описаны

Ilya
09.02.2018
08:23:27
Возможно, но у нас есть те, кто ходил на разные доклады по Clickhouse, и у нас возник спор, а в документашке этого нет=)

Igor
09.02.2018
08:31:25
В changelog много полезной информации

Артемий
09.02.2018
08:33:29
Подробнее в GIT: https://github.com/yandex/ClickHouse/blob/master/CHANGELOG_RU.md

Mikhail
09.02.2018
09:20:04
коллеги, привет. Есть ощущение, что при инсерте данных в формате JSONEachRow в таблице не заполняются поля, не заданные в запросе параметрами по умолчанию. Пример: есть поле ts DateTime, и есть event_date Date default toDate(ts). ts - корректное, event_date - нулевое. Аналогично с ip и ip_integer и еще с парой полей. Кто-то сталкивался с подобным?

Alex
09.02.2018
09:21:31
Ага, https://github.com/yandex/ClickHouse/issues/75

Mikhail
09.02.2018
09:28:59
Ага, https://github.com/yandex/ClickHouse/issues/75
Хотел написать "супер, спасибо" - но блин, не супер ? А есть какие-то workaround'ы?

Andrey
09.02.2018
09:34:28
Товарищи, есть ли возможность запускать запросы в фоне? Например мне нужно сделать длинный OPTIMIZE с дедупликацией. Как лучше всего это сделать?

Jaxvk
09.02.2018
09:38:29
/stat@combot

Combot
09.02.2018
09:38:29
combot.org/chat/-1001080295593

Lamobot
09.02.2018
09:50:37
/stat@combot

Combot
09.02.2018
09:50:37
combot.org/chat/-1001080295593

Alexandr
09.02.2018
10:22:02
после обновления кх в логах зукипера имею много ошибко такого плана: 2018-02-09 10:20:46,402 [myid:] - INFO [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@648] - Got user-level KeeperException when processing sessionid:0x161797f7f46008b type:setData cxid:0x5a7da9ac zxid:0x518ca txntype:-1 reqpath:n/a Error Path:/clickhouse/tables/1/Resources/block_numbers/201802/block-0000010151 Error:KeeperErrorCode = NoNode for /clickhouse/tables/1/Resources/block_numbers/201802/block-0000010151

что бы это могло значить?

Google
Vladimir
09.02.2018
11:00:02
всем привет. отстаёт одна из реплик шарда. в чём может быть причина и как восстановить?

Oleg
09.02.2018
11:04:05
в логах ничего криминального кроме zookeeper 2017-07-25 14:45:02,250 - INFO [ProcessThread(sid:3 cport:-1)::PrepRequestProcessor@651] - Got user-level KeeperException when processing sessionid:0x35d7af9cab10002 type:setData cxid:0x5977ae0e zxid:0xd0000f586 txntype:-1 reqpath:n/a Error Path:/clickhouse/tables/Traffic/block_numbers/201707/block-0000738003 Error:KeeperErrorCode = NoNode for /clickhouse/tables/Traffic/block_numbers/201707/block-0000738003

причем ругается на разные таблицы

Эти сообщения в логах ZK - нормальная работа и не говорит о какой-либо проблеме. Посмотрите SHOW PROCESSLIST на том сервере, который загружен.

сообщение уровня INFO

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