@clickhouse_ru

Страница 566 из 723
Max
24.06.2018
20:05:33
gdb backtrace all threads?
https://gist.github.com/mvikharev/7d2e7d894347429680a9d2d4ed344189

для начала обновиться на последнюю версию
естественно. но надо софт допиливать. это время, мб получится вскрыть проблему.

Vladimir
25.06.2018
05:42:17
Доброе утро Повторю вопрос. Если какое-то проперти выставили как параметер в URL (http запрос) И запрос к распределенной таблице то проталкивается ли этот параметер на все шарды? Должен по идее но кто знает наверняка?

Michal
25.06.2018
06:03:44
Доброе утро Повторю вопрос. Если какое-то проперти выставили как параметер в URL (http запрос) И запрос к распределенной таблице то проталкивается ли этот параметер на все шарды? Должен по идее но кто знает наверняка?
Если честно - я не знаю, предположил бы что нет, не проталкивается. Можно проверить так: создайте Distributed таблицу поверх system.settings и поэксперементируте с запросами.

Google
Eugene
25.06.2018
08:02:20
Коллеги, а для версионирования схем КХ что посоветуете? Хотелось бы что-то вроде flyway по функционалу

Гаврилов
25.06.2018
08:09:52
мы flyway используем

Vasilij
25.06.2018
08:14:05
Возможно ли создать новую колонку и заполнить её какими-то данными из настройки DEFAULT (кроме INSERT ... SELECT ...)? У меня план был такой: 1. Сделать ALTER TABLE t ADD COLUMN new UInt64 DEFAULT (old=0 ? toUInt64(Date) : old) 2. Сделать SELECT new FROM t: как я понял по документации, чтобы колонка new физически заполнилась данными из DEFAULT, надо их спросить 3. Сделать ALTER TABLE t MODIFY COLUMN new UInt64, чтобы убрать DEFAULT 4. Дропнуть старую колонку old 5. Переименовать новую колонку new в old Но я обломался на шаге 2. После снятия DEFAULT (3) данные оказались пустыми.

M
25.06.2018
08:19:27
Шаг 5, а rename column разве возможен?

Vasilij
25.06.2018
08:20:45
Хм, да. План должен был обломаться ещё на более вдумчивом чтении документации :))

Михаил
25.06.2018
08:49:22
Подскажите, пожалуйста, есть ли в CH функция которая суммирует значение поля c предыдущим значением? Чтоб упростить данный запрос: SELECT n,s FROM (SELECT groupArray(number) as n,arrayCumSum(n) as s FROM numbers(10)) ARRAY JOIN n,s

Михаил
25.06.2018
08:52:00
Нужна сумма с предыдущим. А runningDifference возвращает разницу между значениями с предыдущей строкой

Kirill
25.06.2018
08:52:48
вот её и суммируйте

Aleksey
25.06.2018
08:52:52
Вычесть эту разницу из текущего?

Ну или прибавить

Михаил
25.06.2018
08:54:59
В данном случае функция отобразит только сумму с предыдущим значением, но не по всем пройденным строкам с промежуточным результатом

Google
Михаил
25.06.2018
08:56:25
runningAccumulate ?
Как ей пользоваться? Она требует какого то состояния поля, а в документации про нее нету.

Vasilij
25.06.2018
08:56:57
Надо искать тут, по чатику. Ещё сюда поглядеть: https://github.com/yandex/ClickHouse/issues/1469

Михаил
25.06.2018
08:57:41
При запросе выдает ошибку: SELECT number, runningAccumulate(number) as x FROM numbers(10) Code: 43, e.displayText() = DB::Exception: Argument for function runningAccumulate must have type AggregateFunction - state of aggregate function.

Михаил
25.06.2018
09:00:46
Благодарю

Нашел, всех благодарю: SELECT number, runningAccumulate(state) FROM ( SELECT number, sumState(number) AS state FROM numbers(10) GROUP BY number ORDER BY number ASC )

Vladimir
25.06.2018
10:17:40
Добрый день. Возникла задача перезалить все данные с новым первичным ключём в ReplicatedMergeTree таблице. Какая последовательность действий будет оптимальной в этом случае?

M
25.06.2018
10:19:25
Добрый день. Возникла задача перезалить все данные с новым первичным ключём в ReplicatedMergeTree таблице. Какая последовательность действий будет оптимальной в этом случае?
последовательность зависит от конечного результата. Если вам нужна та же таблица тогда больше шагов) Если название можно менять - тогда создать новую таблицу, Insert select и все

M
25.06.2018
10:21:07
тогда после insert select удалять старую, а новой сделать Rename

Michal
25.06.2018
10:21:12
Ну тогда так же, а в конце RENAME table to old_table, new_table to table.

Wolf
25.06.2018
10:21:25
Alexey
25.06.2018
10:21:29
Добрый день. Возникла задача перезалить все данные с новым первичным ключём в ReplicatedMergeTree таблице. Какая последовательность действий будет оптимальной в этом случае?
я делаю так: источник данных начинает лить одновременно в две таблицы: и в старую, и в новую. Далее, критически важный период заливаю из старой таблицы в новую (день, неделя, месяц), переключаем софт на новую таблицу. И уже далее в спокойном режиме доливаем остальные данные из старой в новую.

M
25.06.2018
10:22:57
Мы в этом случае делали название таблиц + номер версии.. аля table_v1 и одно и то же название оставляли только у distributed таблицы. А её направляли на нужную версию

Alexey
25.06.2018
10:23:29
когда таблица не в продакшене, делай как тебе удобнее =) insert select и вперед, если большая табла, то хоть в баше: for i in ...; по дню

Vladimir
25.06.2018
10:24:07
Ну тогда так же, а в конце RENAME table to old_table, new_table to table.
Я правильно понимаю, что переименование таблиц нужно будет делать на каждой реплике по отдельности?

Michal
25.06.2018
10:24:36
Вроде как должно работать ON CLUSTER. Но я не пробовал :)

M
25.06.2018
10:24:52
Запросы CREATE, DROP, ATTACH, DETACH, RENAME выполняются на одном сервере и не реплицируются (из доки)

Google
Alexander
25.06.2018
10:27:35
А как тогда можно удобно создать таблицу, например, на 100 нодах?

Или on cluster работает?

Wolf
25.06.2018
10:28:14
Alexey
25.06.2018
10:28:39
Vsevolod
25.06.2018
10:39:42
а что будет с select запросом, если в distributed table несколько нод недоступно?

Alex
25.06.2018
10:41:14
Зависит от их разблюдовки по шардам
Например при 2 репликах в шарде и одной из них недоступной, запрос пройдёт

Vsevolod
25.06.2018
10:45:09
реплик никаких нет, просто шардинг

Ruslan
25.06.2018
11:12:29
Всем привет! Такой вопрос - у нас есть набор значений в колонке. Мы строим отчёт, группируем данные в таблицы и по этой колонке делаем avg(x). Возникает такая проблема: допустим в нормальном режиме значения этой колонки врьируются примерно от 100 до 200, т.ч. среднее значение должно быть ~140-160; но, из-за бага в платформе может появится строка где это значение будет равно миллиарду. В таком случае значение avg в отчёте уползает дико вверх, хотя это может быть одна строка из нескольких тысяч. Подскажите, пожалуйста, есть ли вариант функции avg, который как-то "отсекает" такие слишком отличающиеся от среднего значения? Или что-то подобное?

Ruslan
25.06.2018
11:16:53
вах, @miptgirl, @Sablast, спасибо! ?

Alexey
25.06.2018
11:47:11
Выложена презентация с Highload Siberia 2018: https://yandex.github.io/clickhouse-presentations/highload_siberia_2018/

Wolf
25.06.2018
11:55:03
А откуда может взяться такая ошибки при ддл запросе, доступ у всего кластера друг к другу есть, клиент легко подключается к любой реплике

<Error> executeQuery: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse /task_queue/ddl/query-0000000011 is executing longer than distributed_ddl_task_timeout (=180) seconds.

кластер два шарда по две реплики , на одном шарде выполнилось а на втором нет, понятно что он не смог достучаться до них, но не понятно почему

Max
25.06.2018
12:12:21
Коллеги, привет; Столкнулись с зависаниями КХ в интеграционных автотестах приложения. Для интеграции используем docker-compose. Между тесткейсам происходит DROP таблиц и создание новых. Столкнулись с проблемой, при которй после некоторого количества тестов КХ перестает обрабатывать запросы. Новые коннекшены отваливаются по таймауту, при этом внутри заранее подключенного clickhose client кх не отвечает на примитивный запрос выборки из system.config. strace -p показывает что КХ висит в futex. Исключили все что могли, подскажите, куда можно копнуть? версия КХ 1.1.54304
Как оказалось, у некоторых разработчиков тесты проходят. На билд сервере же - стабильное зависание. В итоге выяснили, что при использовании docker-compose 1.21.1 проблема стабильно воспроизводится, а на docker-compose 1.15.0 стабильно не воспроизводится. Выясняем точную версию композа после которой ломается. Коллеги, мб кто-то сталкивался с проблемами в работе КХ под docker-compose?

Google
Jen
25.06.2018
12:46:02
Сколько строк кх может прожевать в секунду в благоприятных условиях?

На вставку

papa
25.06.2018
12:46:31
на одной машине? шестизначное.

Jen
25.06.2018
12:47:00
Да, на одной, точнее не получиться?

Разнийа между 100к и 999к серьезная :)

Alex
25.06.2018
12:47:50
вот тут есть: https://clickhouse.yandex/docs/ru/introduction/performance/

Jen
25.06.2018
12:48:05
Благодарю

Alex
25.06.2018
12:56:34
а что будет с select запросом, если в distributed table несколько нод недоступно?
Есть параметр запроса skip_unavailable_shards, если он выключен (по дефолту), то будет ошибка

Michal
25.06.2018
13:08:25
а можно как-то получить состояние агрегатной функции без GROUP BY?

Max
25.06.2018
13:09:16
Vladimir
25.06.2018
13:10:26
а можно как-то получить состояние агрегатной функции без GROUP BY?
Можно использовать модификатор -Array: SELECT sumArray([1, 2, 3, 4]) ┌─sumArray([1, 2, 3, 4])─┐ │ 10 │ └────────────────────────┘ 1 rows in set. Elapsed: 0.002 sec.

...или sumArrayState, если нужно именно состояние

Michal
25.06.2018
13:12:01
т.е. скажем у меня есть поле в котором хранится cnt AggregateFunction(count) могу вытащить значение с помощью countMerge(cnt), но чтобы использовать countMerge мне нужно добавлять к запросу GROUP BY.

papa
25.06.2018
13:14:08
а вы хотите смержить два значения типа AggregateFunction? или вы хотите finalizeAggregation?

Michal
25.06.2018
13:14:18
finalizeAggregation

papa
25.06.2018
13:15:44
это может быть не очевидно из моего комментария, но это название реально существующей функции.

Michal
25.06.2018
13:16:21
Да, я уже понял и как раз проверил. Это то что я искал, спасибо. В доках кстати не находится.

papa
25.06.2018
13:22:32
еще наверное можно arrayReduce('...Merge', [value])

Google
Tima
25.06.2018
13:23:52
Да, я уже понял и как раз проверил. Это то что я искал, спасибо. В доках кстати не находится.
Вооот. хотел как-то подобовлять такое неописание, но не понял как саму доку собирать. И в чате не подсказали?

Wolf
25.06.2018
13:24:29
А как все таки понять почему ddl запрос выполнился не на всех нодах кластера ? В Логах только инфа что он не прошел на двух нодах из за таймаута .

Michal
25.06.2018
13:26:30
Tima
25.06.2018
13:29:11
Да в принципе там markdown, его сложно сломать. А что не получалось?
Т.е. там просто markdown и всё? А поиск как работает? У меня на хроме первый ввод текста поле поиска тормозит секунд по 10. Хотель почитать исходный код и не нашёл как доку собирать

Michal
25.06.2018
13:29:21
еще наверное можно arrayReduce('...Merge', [value])
Угу, так тоже работает, но finalizeAggregation как-то менее экзотично выглядит. :)

Т.е. там просто markdown и всё? А поиск как работает? У меня на хроме первый ввод текста поле поиска тормозит секунд по 10. Хотель почитать исходный код и не нашёл как доку собирать
ну какие-то там более-менее стандартные либки которые создают индекс / генеруруют HTML из MarkDown и т.п. Я сам собирать не пробовал, мне хватает того что это собрано на clickhouse.yandex :) А что конкретно не выходит? python / pip установлены? Что build.sh из папки docs ругается про что-нибудь?

Kirill
25.06.2018
14:40:47
Подскажите, arrayMap((x, y)-> tuple(x, y), polygon_lat, polygon_lon) Должен же возвращать пригодный для pointInPolygon Array(tuple()) ? Но почему-то при попытке подсунуть его получаю DB::Exception: Argument 2 for function pointInPolygon must be constant array of tuples ?

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