
Nikolai
26.01.2018
14:12:20
Единственное, что приходит в голову - сходить в словарь заранее (другим запросом), и записать список полученных значений в IN (списком). Причем сделать это в 2 запроса.

Ilona
26.01.2018
14:13:53
Эх, видимо, только так. Жаль.
Спасибо.

Alex
26.01.2018
15:17:13
Всем привет!
А кто нибудь юзает ClickHouse вместе с Apache Spark?
Какой Spark коннектор посоветуете к ClickHouse (интересует как чтение так и запись)?
Пока нагуглил тока https://github.com/DmitryBe/spark-clickhouse

Name
26.01.2018
15:34:29

Google

Name
26.01.2018
15:42:17
Год назад искал небыло.. надо попробовать

Oleg
26.01.2018
15:42:21
Всем привет. В документации есть двиг Dictionary, но почему-то он есть только в русской версии, а в самой БД он не работает.
Скажите, его выпилили, не добавили или как-то еще?

Alex
26.01.2018
15:42:52

Vadim
26.01.2018
15:44:38
Для чтения из кликхауса в spark dataset'ы используем jdbc, для записи - пока ничего не используем

Name
26.01.2018
15:45:42

Vadim
26.01.2018
15:46:34
Пока не было необходимости.

Nikolai
26.01.2018
15:47:14

Alex
26.01.2018
15:47:24

Oleg
26.01.2018
15:47:59

Nikolai
26.01.2018
15:48:56
какая версия ClickHouse?

Oleg
26.01.2018
15:49:41

Vitaliy
26.01.2018
15:50:32

Nikolai
26.01.2018
15:51:21

Google

Mikhail
26.01.2018
15:51:22

Oleg
26.01.2018
15:51:51

Tima
26.01.2018
16:28:05

nikoinlove
26.01.2018
16:52:32
2018.01.26 19:51:26.995541 [ 526 ] <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, e.what() = Connection reset by peer
а как узнать куда это у него конешн ресет? вокруг в логе ничего нет)

Vladimir
26.01.2018
17:15:58
Интересно, будет ли трансляция с завтрашнего митапа? )

Firej
26.01.2018
17:23:51
чот я какоето странное получил - DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts., e.what() = DB::Exception, Stack trace: до этого делал alter table, теперь вот не принимает инсерты БД ?

Анастасия
26.01.2018
18:05:06
Здравствуйте
Появилась функция проверки на попадания в полигон? pointInEllipses не подходит

papa
26.01.2018
18:12:00
SELECT *
FROM system.functions
WHERE name LIKE '%point%'
┌─name───────────────────┬─is_aggregate─┐
│ pointInPolygonCrossing │ 0 │
│ pointInPolygonWinding │ 0 │
│ pointInEllipses │ 0 │
│ pointInPolygonFranklin │ 0 │
│ pointInPolygon │ 0 │
└────────────────────────┴──────────────┘

Анастасия
26.01.2018
18:14:07
спасибо!

Cargeh
26.01.2018
18:43:07

Firej
26.01.2018
18:43:38
Много и часто ?

Cargeh
26.01.2018
18:45:28
Много и часто ?
"часто" и есть ответ на вопрос :)
А "много" - сколько за пачку?

Firej
26.01.2018
18:46:50
Точно не скажу, но или 300 или 3000

Cargeh
26.01.2018
18:54:20
Точно не скажу, но или 300 или 3000
3000 и тем более 300 - это мало :)) Если есть возможность вставлять больше, вставляйте больше, до 100 тыс строк за раз поидее вообще спокойно
Если нет, то делайте буфер таблицу (движок Buffer) и вставляйте в нее, а она будет накапливать и уже переливать в основную
Главное, если льёте в основную таблицу, вставлять не слишком часто, лучше много и пореже. В буфер вроде все равно

Firej
26.01.2018
18:54:52
Хм ну странно
На самом деле я потом остановил запись, а ошибки все равно не унимаются
Но там уже разные

Cargeh
26.01.2018
18:55:38

Firej
26.01.2018
18:56:03
И ошибки коннекта к зукиперу и ошибки несоответствия типов - правильно, табличкам то я сделал альтер, сменил тип колонок

Cargeh
26.01.2018
18:56:05
Из документами (на всякий случай):
INSERT сортирует входящие данные по первичному ключу и разбивает их на партиции по месяцам. Если вы вставляете данные за разные месяцы вперемешку, то это может значительно снизить производительность запроса INSERT. Чтобы избежать этого:
Добавляйте данные достаточно большими пачками. Например, по 100 000 строк.
Группируйте данные по месацам самостоятельно перед загрузкой в ClickHouse.
Снижения производительности не будет, если:
Данные поступают в режиме реального времени.
Вы загружаете данные, которые как правило отсортированы по времени.

Google

Firej
26.01.2018
18:56:46
Данные в реальном времени шли
короче я все сломал походу ?
пошел почистить в зукипере лишнего и перестарался
DB::Exception: Cannot create table from metadata file блаблабла

Oleg
26.01.2018
19:32:30


Саша
26.01.2018
20:05:11
Добрый день.
Для вставки в таблицу используется clickhouse-driver под python. В случае если сервер clickhouse выбрасывает ошибку, то драйвер вызывает исключение. Если сервер не выбросил ошибки, то с точки зрения драйвера вставка произошла успешно. Так же попробовал http интерфес через curl, при успешной вставке возвращается 200 код ответа без дополнительной информации. Т.е. вставку можно считать успешной.
1. Выбираем из постоянного хранилища все записи, которые не были синхронизированы в CH.
2. Производим операцию вставки в CH в Buffered таблицу, которая пишет в ReplictedMergeTree пачками по 50К строк. Размер строки около 250-300 байт. Если произошло исключение, то пробуем еще несколько раз.
3. Если исключения не произошло, то в основном хранилище помечаем записи как синхронизированные.
Проблема: в постоянном хранилище элементы были отмечены как синхронизированные, т.е. явных ошибок между драйвером и CH не произошло, при этом эти записи отсутствуют в CH. Текущая версия CH v1.1.54327-stable
Первый раз заметили проблему в ноябре, затем обновили сервер до 1.1.54327 от 2017-12-21 в котором была исправлена такая проблема.
Есть ли какой-то способ или опция, которая отдает дополнительный признак успешности операции? Или после вставки делать select в CH и проверять успешность?
поправка, таблица была ReplicatedMergeTree без Buffered