@clickhouse_ru

Страница 277 из 723
Cargeh
05.10.2017
15:47:37
Батч инсерты работают
еще глянул по коду - поидее spring jdbc template должен нормально с этим работать, спасибо.

Алексей
05.10.2017
15:50:02
господа согласно perf top кх замучил ядро. куда бы посмотреть что с ним не так ?

Google
Алексей
05.10.2017
15:50:04


rhel 7.4 c дефолтным ядром. под vmware 6.5

Алексей
05.10.2017
16:15:55
нет там есть 5 запросов

ага. total_rows_approx: 553615360 это не очень да ?

Konstantin
05.10.2017
16:18:36


Igor
05.10.2017
16:30:18
Всем привет. Столкнулись с проблемой подвисших на сервере запросов. Проявляется когда накидываем кучу запросов на одну машину в кластере - в какой-то момент достигаем лимита на количество одновременно выполняющихся запросов, часть из них начинает отваливаться И вот часть из отвалившихся запросов остаётся висеть в system.processes. gdb и код кликхауза помогли найти место, где происходит что-то плохое: #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x0000000003f6363b in Poco::SemaphoreImpl::waitImpl() () #2 0x00000000034896e2 in DB::UnionBlockInputStream<(DB::StreamUnionMode)0>::finalize() () #3 0x000000000348a68a in DB::UnionBlockInputStream<(DB::StreamUnionMode)0>::~UnionBlockInputStream() () ... Судя по тому, что в коде UnionBlockInputStream перед вечным локом есть намёк на print-debugging //std::cerr « "popping\n"; output_queue.pop(res); , проблема известная. Можете посоветовать как избавиться от подобного?

Vladimir
05.10.2017
17:33:52
Коллеги, помогите разобраться с optimize table partition final в ReplacingMergeTree. Почему после оптимайза остаются дубликаты по первичному ключу?

Vladimir
05.10.2017
17:44:18
Вроде должны, потому что count() » uniq(primary key), а ver = now()

Konstantin
05.10.2017
17:48:40
Вроде должны, потому что count() » uniq(primary key), а ver = now()
а у меня наоборот, uniq > count(). возможнр из-за того что uniq не точная функция?

Vladimir
05.10.2017
17:49:06
Да, у меня тоже так было, проверял с uniqExect()

Google
Vladimir
05.10.2017
17:49:33
но у меня count() сильно больше uniq() раза в 2, т.е. на несколько десятков миллионов больше

Konstantin
05.10.2017
17:50:48
а с unicExact какой разброс?

у меня разница между count() и uniq(key) 12млн в партиции с 1.3млрд записей

кстати, может кто подскажет, не могу посчитать uniqExact за всю партицию получаю Memory limit (for query) =( max_memory_usage │ 20000000000 max_bytes_before_external_sort │ 15000000000 max_bytes_before_external_group_by │ 15000000000

Vladimir
05.10.2017
17:59:58
ну так просто не влезает значет, мемори лимиты в байтах, а не строках, так что ещё зависит от типа вашего key

Konstantin
05.10.2017
18:01:04
т.е. на диск запрос никак не выпихнуть?

Vladimir
05.10.2017
18:01:55
Я вам боюсь наврать, по этому не отвечу, но скину ссылку на доклад по этой теме

https://events.yandex.ru/lib/talks/4556/

Maxim
05.10.2017
18:05:04
Привет, а какая таблица подходит для мултипаточной записи

Konstantin
05.10.2017
18:06:09
https://events.yandex.ru/lib/talks/4556/
спасибо, уже смотрел.

Привет, а какая таблица подходит для мултипаточной записи
мы в 10 потоков делали инсерты в ReplacingMergeTree, но зачем сами не поняли)

Maxim
05.10.2017
18:10:23
Ожидается что будет как минимум 20 приложух которые будут писать большими пачками каждую секунду

Maxim
05.10.2017
18:32:06
Какого размера пачки?
Пока тысяч по 5

Vladimir
05.10.2017
18:49:40
А никто не сталкивался с неуникальностью watch_id в hits из яндекс метрики?

papa
05.10.2017
18:50:37
два раза одна и та же строка?

Vladimir
05.10.2017
18:51:28
Да

Одинаковые watch_id

Google
Vladimir
05.10.2017
18:51:52
Остальные поля не проверял

Все поля, которые у меня в выгрузке идентичные

papa
05.10.2017
18:54:57
значит watch_id скорее всего уникальный, но выгрузился два раза.

Vladimir
05.10.2017
18:55:46
Проблема в том, что веб-интерфейс показыват за этот день ровно столько хитов, сколько выгрузилось (больше чем уникальных watch_if)

Атата
05.10.2017
18:59:23
Пока тысяч по 5
Собирать куски побольше и писать реже, имхо

Атата
05.10.2017
19:02:17
Maxim
05.10.2017
19:04:56
Почему?
Нужно максимально ближе к реальном времени отображать обработанные данные

Vsevolod
05.10.2017
19:47:50
Нужно максимально ближе к реальном времени отображать обработанные данные
Уточните "максимально ближе", может быть задержка в 10 сек не будет критичной.

Ожидается что будет как минимум 20 приложух которые будут писать большими пачками каждую секунду
Или мб кидать данные с приложений в очередь, а 1-2 демона будут сбрасывать в КХ

Anton
05.10.2017
21:21:24
а если использовать движок Buffer ? Можно и писать, и сразу читать в реальном времени

Maxim
05.10.2017
21:41:16
а если использовать движок Buffer ? Можно и писать, и сразу читать в реальном времени
Да пишешь в буффер,читаешь из него и получаешь данные из таблицы другой, но его стоит использовать, если есть реальная необходимость

Igor
05.10.2017
22:01:36
Tabix.Beta Собрал новую тестовую ветку beta http://beta.tabix.io/ Из основных фич: -- Устранена большая утечка памяти -- Добавлено кэширование структуры базы -- Мелкие ускорения -- +100500 новых багов)) Changelog: https://github.com/smi2/tabix.ui/blob/beta/manual/docs/Changelog.md#2017-10-06-beta-1

Igor
05.10.2017
22:44:23
Только после появления tabix.server - это прокси сервер для запросов

Можно поставить nginx - и прокисорать запросы в CH, в beta появились режимы ROuser+BaseAuth, но нужен слой между

Roman
06.10.2017
07:25:35
@not_logan привет! А тебе удалось попробовать https://github.com/VerizonDigital/vflow/tree/master/consumers/clickhouse для импорта из кафки в деле?

Paul
06.10.2017
07:39:55
Ещё нет, на этой неделе времени не было совсем, постараюсь выкроить на следующей

Google
Bob
06.10.2017
07:48:41
Привет! Не подскажите, можно ли как то отсротировать массив? Или сделать join массива, отсортировать и как то пронумеровать его уже отсортированным?

Андрей
06.10.2017
07:56:12
Коллеги, а кликхаус умеет limit offset?

Bob
06.10.2017
07:57:08
Да, LIMIT n, m позволяет выбрать из результата первые m строк после пропуска первых n строк.

Igor
06.10.2017
08:39:13
господа, а какой драйвер можете порекдомендовать для работы с кликхаузом из питона?

Constantine
06.10.2017
08:44:05
Коллеги, а пользуясь лимит/оффсет можно как-нибудь не задавать лимит? что-то вроде limit 100, 0 (не катит) или limit 100, all

Bob
06.10.2017
08:47:41
Коллеги, а пользуясь лимит/оффсет можно как-нибудь не задавать лимит? что-то вроде limit 100, 0 (не катит) или limit 100, all
Думаю как вариант возможно использовать функцию: rowNumberInAllBlocks() Возвращает порядковый номер строки в блоке данных. Функция учитывает только задействованные блоки данных. И в условие добавить > XXXX

Constantine
06.10.2017
08:57:21
limit 100, 999999999999999999
Не, ну эт дичь)

Konstantin
06.10.2017
08:57:30
работает жеж)

Vladimir
06.10.2017
09:06:40
Вот пример select rowNumberInAllBlocks( ) as rnb,* from (select * from system.numbers limit 10) where rnb > 4;
select watch_id from hits where rowNumberInAllBlocks() >= 100 и выводить не обязательно

Stas
06.10.2017
09:09:38
а подскажите, а как заставить функцию today() выводить дату в формате DateTime (дописывая нули в минуты и часы)

Konstantin
06.10.2017
09:10:04
SELECT toDateTime(today()) ┌─toDateTime(today())─┐ │ 2017-10-06 00:00:00 │ └─────────────────────┘

Stas
06.10.2017
09:10:53
спасибо!

Konstantin
06.10.2017
09:16:19
rowNumberInAllBlocks() - запрос продолжает выполнятся пока не пройдет всю таблицу, результаты выдачи отличаются от LIMIT

Konstantin
06.10.2017
09:21:03
угу(
так что limit 100, 999999999999999999 - нормально отрабатывает)))

@untley а вам для консоли надо или скрипт какой нибудь пишете?

Constantine
06.10.2017
09:22:50
скрипт

Google
Constantine
06.10.2017
09:22:55
причем экранированный

Konstantin
06.10.2017
09:23:52
как насчет сначала делать count() запроса и параметр count() подставлять в offset?

Constantine
06.10.2017
09:24:20
каунт тоже по всей таблице пойдет

Konstantin
06.10.2017
09:25:00
25млрд строк посчиталось за 5 секунд

Constantine
06.10.2017
09:25:14
Да и как это запилить? Курсор?

сейчас бы и такое прокатило, однако сложные запросы с джоинами в джоинах в джоинах - нагнут раком

Kostya
06.10.2017
09:34:43
господа, а какой драйвер можете порекдомендовать для работы с кликхаузом из питона?
Драйвер для нативного протокола: https://github.com/mymarilyn/clickhouse-driver, кроме того есть куча HTTP-драйверов (см. оф доку). Если очень хочется, то можно взять чистый requests если чего-то не хватает.

Igor
06.10.2017
09:34:58
спасибо

да, видел кучу разного в т.ч. SQLAlchemy, но хотелось что-нибудь быстрое

Konstantin
06.10.2017
09:39:30
Да и как это запилить? Курсор?
#!/bin/bash OFFSET=clickhouse-client --query="SELECT count() FROM table_name" echo "${OFFSET}" clickhouse-client —query="SELECT * from table_name limit 100, ${OFFSET}"

Kostya
06.10.2017
09:39:33
сейчас занимаюсь оптимизацией первого по скорости вставки, там с ней действительно печально. если проект позволяет, то можете попробовать под pypy, оно работает, но без поддержки компрессии. к сожалению это питон, а не сишечка, поэтому с гошным драйвером и тем более clickhouse-client вряд ли получиться соревноваться

Александр
06.10.2017
11:51:09
Всем привет. Подскажите, можно ли как-то через системные таблицы увидеть, что часть данных, вставленных в ditributed таблицу, еще не отправлена на другой шард?

Bulat
06.10.2017
12:06:03
Коллеги, кто-нибудь знает способ склеить несколько строчек вместе? типа groupConcat из mysql

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