
Артемий
12.02.2018
10:46:43
Если число соединений между серверами будет больше чем max_distributed_connections, выкинется исключение или запросы встанут в очередь?

Stanislav
12.02.2018
10:47:13
И, кстати, где их лучше смотреть?

Tima
12.02.2018
10:54:20

Артемий
12.02.2018
10:58:41
Спасибо за полезную ссылку

Google

Roman
12.02.2018
11:16:36
Спасибо за полезную ссылку
Попробуйте использовать https://github.com/Vertamedia/chproxy
Прокси умеет выстраивать запросы в очередь при превышении лимитов, и потом выполнять их последовательно

Alexey
12.02.2018
11:17:15
у кого последний кликхаус, у вас во внешнем словаре также?
SELECT
last_exception,
source
FROM system.dictionaries
WHERE last_exception != ''
┌─last_exception─────────────────────────┬─source─┐
│ MySQL: db.table │ │
│ MySQL: db.table │ │
в last_exception у него прописано MySQL: db.table, а в source пусто
перепутано местами?

Kirill
12.02.2018
11:20:58
да, где-то уже делали правку

Alexey
12.02.2018
11:30:36

Alex
12.02.2018
12:36:38

Konstantin
12.02.2018
12:38:17
Подсобите пожалуйста, как понимать эту ошибку DB::Exception: Cannot parse input: expected \n before: .0\n2018-02-12\t
�2 12:18:35\t6072736\t12208345\t22832753\t2140497316\t3207009083\t02a7 31a�: (at row 1)

Alexey
12.02.2018
12:45:58
в инсерте и в файлике не совпадает колво колонок

Alex
12.02.2018
12:46:42


Артемий
12.02.2018
12:50:49

Alex
12.02.2018
12:53:28
Нет, не будет. А вы хотите его уменьшить?

Google

Alex
12.02.2018
12:57:48

Артемий
12.02.2018
12:58:20

Alex
12.02.2018
12:59:49
С дефолтным значением 1024 и если у вас в кластере меньше 1024 шардов, вы в этот лимит никогда не упрётесь.

Vasilij
12.02.2018
13:04:06

Артемий
12.02.2018
13:08:09
max_distributed_connections по умолчанию установлено в 100 (если документация актуальна).
Обработка исключение в любом случае должна быть.

Alex
12.02.2018
13:12:13
Ага, значит в документации ошибка, спасибо. У себя значение можете проверить запросом select * from system.settings where name = 'max_distributed_connections'. Исключения, как я уже говорил, не будет.

Kirill
12.02.2018
13:12:15

Kirill
12.02.2018
13:16:10

Артемий
12.02.2018
13:20:49

Alex
12.02.2018
13:23:18
Результат будет правильный, но запрос будет выполнен медленнее - в меньшее число потоков. Пример: у нас 4 шарда, max_distributed_connections=2. Значит запрос будет выполнен в 2 потока, сначала на двух шардах, потом на двух оставшихся.

Артемий
12.02.2018
13:40:31

Alex
12.02.2018
13:46:55
Ну и например для time-series данных, оптимальные схемы компрессии пока что не реализованы.


Jen
12.02.2018
14:39:24
подскажите, где можно найти описание настроек (SETTINGS при создании таблицы/вьюшки) конкретного движка?

Kirill
12.02.2018
14:41:13

Jen
12.02.2018
14:42:57
что то я вот там не вижу настройку, в которой можно было бы указать поля для суммирования для SummingMT

Kirill
12.02.2018
14:44:26
Понял, но это не в настройках
Пример
Engine = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/table', '{replica}', (
field1, field2 ...
)
)

Jen
12.02.2018
14:45:41
это знаю, но не подходит
я хочу кастомный ключ партиционирования

Google

Jen
12.02.2018
14:45:55
) ENGINE = SummingMergeTree()
PARTITION BY month
ORDER BY (month, subscriber, service, protocol, src_ip, src_port, dest_ip, dest_port)
SETTINGS ;
и как здесь указать поля теперь?

Kirill
12.02.2018
14:46:55
SummingMergeTree( (field, field2) )

Jen
12.02.2018
14:47:19
спасибо, сейчас попробую

Константин
12.02.2018
14:48:01
добрый день!
происходят какие-странности на кластере
делали бэкап
и теперь пытаюсь его накатить назад
в бэкап таблице 56млн записей
после insert from select - в конечной таблице - всего 28млн записей
что делать? в какую сторону смотреть?

Alexey
12.02.2018
14:50:34
репликация, distributed, вот это все - как настроено?

Константин
12.02.2018
14:50:55
2 шарда в каждой 2 реплики
дистрибутед таблица на всех нодах

Alexey
12.02.2018
14:51:16
может у вас в distributed 56 млн, а бэкап только 1 шарда делали, и поэтому половина?

Константин
12.02.2018
14:51:32
нет, бэкап делался с дистриба
чтобы собрать все данные
и заливается обратно в дистриб

Alexey
12.02.2018
14:52:18
а в дампе, в котором бэкап, точно 56 млн строк?

Константин
12.02.2018
14:53:26
да

Google

Alexey
12.02.2018
14:54:39
а локальные таблицы какой движок
попробуйте сделать рядом MergeTree без репликации и туда залить, будет ли там 56 млн, если да, значит по каким-то причинам отбрасываются дубли может быть
еще баг был, чинили в 54337: Исправлена работа дедупликации блоков после DROP или DETATH PARTITION. Раньше удаление партиции и вставка тех же самых данных заново не работала, так как вставленные заново блоки считались дубликатами.


Константин
12.02.2018
14:56:51
бэкап был сделан в mergetree
основная таблица Distributed поверх ReplicatedMergeTree
SELECT count()
FROM vast_tracking_backup_201802
┌──count()─┐
│ 56452175 │
└──────────┘
1 rows in set. Elapsed: 0.017 sec. Processed 56.45 million rows, 56.45 MB (3.26 billion rows/s., 3.26 GB/s.)
:) select min(date) from vast_tracking_backup_201802;
SELECT min(date)
FROM vast_tracking_backup_201802
┌──min(date)─┐
│ 2018-02-01 │
└────────────┘
SELECT count()
FROM vast_tracking
WHERE date >= '2018-02-01'
┌──count()─┐
│ 28228926 │
└──────────┘
после восстановления
брррррр

Kirill
12.02.2018
15:00:59
А в /var/lib/clickhouse/data/vast_tracking что-нибудь есть? Там данные могут до одного шарда не доехать, можно в system.replication_queue посмотреть

Константин
12.02.2018
15:01:12
данные только на одном шарде
второй пустой
походу репликация умерла
хотя как-то странно

Kirill
12.02.2018
15:53:13

Константин
12.02.2018
16:19:06
Еще ни как...

Артемий
12.02.2018
16:32:42
Я верно понимаю, что JOIN сейчас полностью грузят "правую" таблицу при каждом запросе и ее имеет смысл помещать в движок JOIN, выделя под это необходимое количество оперативки (сейчас ее размер 2 ГБ в сжатом состоянии).
В таблице хранятся строки (по типу имен пользователей), их около 100 млн, количество будет расти.
JOIN идет по primary, но лог показывает, что читаются все строки, ключ не испоьзуется?


Yuran
12.02.2018
16:50:23
Я верно понимаю, что JOIN сейчас полностью грузят "правую" таблицу при каждом запросе и ее имеет смысл помещать в движок JOIN, выделя под это необходимое количество оперативки (сейчас ее размер 2 ГБ в сжатом состоянии).
В таблице хранятся строки (по типу имен пользователей), их около 100 млн, количество будет расти.
JOIN идет по primary, но лог показывает, что читаются все строки, ключ не испоьзуется?
PRIMARY ключ в ClickHouse всё равно не позволяет по одной строчке получать нужные значения, для этого нужно загрузить целый блок, и ещё и другие колонки прочитать. Поэтому результат запроса и читается целиком в память при выполнении JOIN. Но ИМХО лучше использовать словари, чем JOIN-таблицы, потому что их нужно каждый раз наполнять при рестарте.

Konstantin
12.02.2018
16:51:34

Yuran
12.02.2018
16:52:48
@milovidov_an может быть ограничить максимальный размер запроса, который может быть обработан полноценным парсером, чтобы избежать ошибок, как указано выше?

Google

Konstantin
12.02.2018
16:53:08
Если без батча, просто инсертить, сохраняется без ошибки
И через терминальный клиент тоже сохраняется
Это повод написать баг репорт ?

Yuran
12.02.2018
16:54:25

Alexey
12.02.2018
16:54:41

Konstantin
12.02.2018
17:14:31
@Yuran нет, через JDBC и через терминальный клиент
http не пробовал
подытоживаю, вставляю Double в UInt32 колонку. Единичными инсертами через клиент командной строки и через JDBC сохраняется без проблем, а вот батчами (через JDBC) возникает ошибка, которую не легко с ходу прочесть и понять Caused by: java.lang.Throwable: d���U������R������WCode: 27, e.displayText() = DB::Exception: Cannot parse input: expected \n before: .0\n: (at row 1)


Roman
12.02.2018
17:25:44
Добрый день.
При попытке экспорта даже с 1 строкой из CSVWithNames вида:
"time","eventId","bannerId","idfa","platformId","hostId","ghostId","showId","userIp","param","gparam","answers","userAgent","referer","watchId","videoId","gparam2","date"
1486680824,3102,1881,"1486680749_5573035",2,248320,7617,14866808026836266,3116063728,"",30000138,"","","","","","","2017-02-09"
1486640392,3021,1881,"1486620643_2969813",2,248320,7617,148664039161868380,3116063696,"","","","","","","","","2017-02-09"
Падает с ошибкой
Code: 27. DB::Exception: Cannot parse input: expected , before: \n1486680824,3102
Больше ничего информативного в логах нет, в чем может быть еще проблема?


Vladimir
12.02.2018
17:28:54
Добрый день.
При попытке экспорта даже с 1 строкой из CSVWithNames вида:
"time","eventId","bannerId","idfa","platformId","hostId","ghostId","showId","userIp","param","gparam","answers","userAgent","referer","watchId","videoId","gparam2","date"
1486680824,3102,1881,"1486680749_5573035",2,248320,7617,14866808026836266,3116063728,"",30000138,"","","","","","","2017-02-09"
1486640392,3021,1881,"1486620643_2969813",2,248320,7617,148664039161868380,3116063696,"","","","","","","","","2017-02-09"
Падает с ошибкой
Code: 27. DB::Exception: Cannot parse input: expected , before: \n1486680824,3102
Больше ничего информативного в логах нет, в чем может быть еще проблема?
Вы видимо импортируете CSV в Clickhouse. И у вас в CSV меньше полей, чем в таблице.


Константин
12.02.2018
17:28:59
Смогли оживить?
2018.02.12 20:25:46.818979 [ 35 ] <Error> vast_tracking.Distributed.DirectoryMonitor: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof, e.what()
лог на этой ноде усыпан такими ошибками

Roman
12.02.2018
17:30:12

Vladimir
12.02.2018
17:33:16

Константин
12.02.2018
17:40:21
@milovidov_an поможете разобраться? При заливе в дистрибьютед таблицу - данные сторятся только на той шарде - куда был сделана вставка

Roman
12.02.2018
17:41:06

Kirill
12.02.2018
17:49:26

Константин
12.02.2018
17:50:08
вот накопал такую информацию из лога
2018.02.12 20:50:08.804323 [ 19 ] <Trace> vast_tracking.Distributed.DirectoryMonitor: Started processing /var/lib/clickhouse/data/default/vast_tracking/default@192%2E168%2E0%2E22:9000/55884.bin
2018.02.12 20:50:08.845003 [ 19 ] <Error> vast_tracking.Distributed.DirectoryMonitor: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof, e.what() = DB::Exception, Stack trace:
лог с нода в первом шарде
/default@192%2E168%2E0%2E22:9000 - это нода второго шарда
я зашел сюда: /var/lib/clickhouse/data/default/vast_tracking/default@192%2E168%2E0%2E22:9000/