@clickhouse_ru

Страница 697 из 723
Wolf
11.10.2018
13:08:24
айди должны в новых нодах быть старше чем в старых зукиперах

добавлять логично что надо не 4 ноды так как по сути у вас 4 пустых ноды имеют кворум перед тремя работаютщими

Google
Wolf
11.10.2018
13:09:33
то есть вы стреляете себе в ногу, добавляйте по две

Viktor
11.10.2018
13:13:38
Нашел лог. Похоже у меня из одного дц в другой не могут достучаться новые машинки :/

Denis
11.10.2018
13:23:38
Добрый день! Подскажите пожалуйста есть ли аналог GIST INDEX в КХ. Если я задам MergeTree(date, (date1,date2 ), 8192) то как будет осуществляться запрос в котором я укажу where date1 > "2010-01-02" and date2 < "2010-02-02" . Неважно с чем сравнивать.. Как я понимаю сначала будет поиска по b-tree по date1 и потом пойдет полный поиск по date2 или же будет одновременный поиск по смешанному b-tree дереву? (наподобие gist в postgress)
никаких gist и btree тут нет. create table dtest(date1 Date, date2 Date, val String) engine=MergeTree() order by (date1,date2); insert into dtest select toDate('2009-01-01')+(number%103), toDate('2010-01-01')+(number%103), toString(number) from numbers(100000000) SELECT count() FROM dtest WHERE date1 > '2009-02-02' ┌──count()─┐ │ 67961158 │ └──────────┘ Processed 67.97 million rows SELECT count() FROM dtest WHERE date2 < '2009-02-02' 0 rows in set. Processed 4.60 million rows SELECT count() FROM dtest WHERE (date1 > '2009-02-02') AND (date2 < '2009-02-02') 0 rows in set. Processed 3.17 million rows

а блин, забыл оптимайз optimize table dtest final; SELECT count() FROM dtest WHERE (date1 > '2009-02-02') AND (date2 < '2009-02-02') 0 rows in set. Elapsed: 0.005 sec. Processed 573.70 thousand rows

Konstantin
11.10.2018
13:37:22
коллеги, подскажите, можно ли поcчитать runningDifference между элементами массива дат?

papa
11.10.2018
13:41:41
массив - это же колонка со значениями и колонка с отсечками длин. а diff - это вычитание соседних значений,

так даже веселее получается

Konstantin
11.10.2018
13:44:32
получается для моего вариантам можно просто дропунть первый элемент и будет в принципе то что нужно

Alexey
11.10.2018
14:00:30
Google
Alexey
11.10.2018
14:04:44
Обходим, что проблемный запрос укладываем в подзапрос, и уже сверху или limit или order by, из-за чего глючит

Denis
11.10.2018
14:15:13
нет. Это тэг range_min&range_max. Откатил на 18.10.3 и заработало
у вас поля в тегах range_min range_max nullable в PG ? вы хоть в тикете это напишите, но конечно это интересная идея where xx between null and ... возможно такую фичу убрали с https://github.com/yandex/ClickHouse/issues/2093

terry
11.10.2018
14:32:49
https://github.com/yandex/ClickHouse/issues/3347

кто там заведует докой

Alexey
11.10.2018
14:32:54
А можно пример?
Select * from (select * from ...) limit 1000/order by

В подзапросе проблемный запрос, еслим к нему добавить limit, срет такими ошибками

Kirill
11.10.2018
14:47:55
ENGINE = ReplacingMergeTree(EventDate, (SomeId, SomeClass, EventDate, SomeEnum, SomeType), 8192);

такой движок же должен перезписывать данные только в том случае, если совпадает ключ (дата, айдишник и остальные поля) ?

Wolf
11.10.2018
14:49:13
Этот и должен

Kirill
11.10.2018
14:50:59
у меня он похоже ошибается

и как-то странно перезаписывает данные для новых дат

передавать ’string_value’

в одинарных кавычках для Enum8 нормальная практика ?

опытным путем выяснил

что КХ перезаписывает данные с разными Enum

Denis
11.10.2018
15:32:35
что КХ перезаписывает данные с разными Enum
да вроде нет CREATE TABLE enumtest ( id UInt64, status Enum8('started' = 1,'loaded' = 2,'done' = 3), val String ) ENGINE = ReplacingMergeTree order by (id, status) insert into enumtest values (1, 'started', 'test0') insert into enumtest values (1, 'done', 'test1') select * from enumtest final optimize table enumtest select * from enumtest

Google
Kirill
11.10.2018
15:33:41
да, у меня не было в ключе значения одного

Alexey
11.10.2018
15:47:47
Блин короче не знаю, замучался, вдруг кто сталкивался. При подключении из API с использованием Golang SQLDriver 1.1.54213 к серверу ClickHouse через балансировщик HAProxy, первая попытка подключения к ClickHouse не проходит, начиная со второй попытки и далее все нормально подключается

пока не истекло время timeout server

подключения идут

как только время заканчивается, первое подключение снова не проходит

А все остальные идут нормально, до следующего истечения времени таймаут сервер

то есть первые tcp пакеты которые возвращаються, говорят что соединение не доступно...

да забыл сказать, балансировщик настроен на TCP, а не http

Alexey
11.10.2018
16:14:06
HAProxy чтобы балансировать между четырьмя нодами кликхауса

пишет при первой попытке

[clickhouse][connect=3]-> ping [clickhouse][connect=3][connect] read error: EOF

а потом подключается

У нас есть свое API

которое сообщеает нам

Message: Clickhouse ping error: %!(EXTRA *errors.errorString=driver: bad conne ction)

Проблема в том что мы при получении ошибки этой, отправляем сообщенние в graylog, которые шлет нам уведомления в телеграмм

И мы не можем сразу понять, дейстительно нет соединения или это первая попытка

Kirill
11.10.2018
16:16:46
Драйвер сам умеет балансировать. Можно покрутить таймауты, но ситуация интересная, такое бывает, надо смотреть что у вас с сеткой.

Google
Kirill
11.10.2018
16:17:57
В alt_hosts впишите адреса других серверов.

Alexey
11.10.2018
16:18:28
Это в коде библиотеки ?

Kirill
11.10.2018
16:18:34
Да

[clickhouse][connect=3]-> ping [clickhouse][connect=3][connect] read error: EOF
Судя по всему он уже поретраил и не смог подключиться несколько раз.

Alexey
11.10.2018
16:19:57
Просто когда идет подключение в обход HAProxy такой проблемы нет

Wolf
11.10.2018
16:20:00
В alt_hosts впишите адреса других серверов.
у нас судя по тексту ошибки такой же драйвер с балансировкой прямо в нем без прокси и никаких проблем не наблюдаем.

Alexey
11.10.2018
16:21:31
Надо будет подумать как через стороние балансировщики сделать, просто не хочется дергать программистов наших, так как подключение к ClickHouse нужно будет править не в одной API, а сразу в нескольких

в любом случае большое спасибо что откликнулись на помощь !

=)

Slava
11.10.2018
16:26:04
Коллеги, не подскажете, какие есть средства отладки проблем с materialized view? Где clickhouse хранит данные о них, есть ли какие-то логи и т.п.? Бывают проблемы что view перестаёт обновляться почему-то, хотя данные в таблицу вставляются.

Alexey
11.10.2018
16:30:25
@kshvakov

tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000,host3:9000

получается тут alt_hosts=второй сервер:9000

верно ?

И как балансинг указать in_order - first live server is choosen in specified order ?

в самом конце конекшен стринга ?

типа: tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000&balancing=in_order

Kirill
11.10.2018
16:33:12
Все так, тип балансировки не указывайте, он по умолчанию все ОК

Google
Alexey
11.10.2018
16:34:09
у нас просто несколько стейджингов, и на некоторых нужно указать чтобы всегда записи делались на первый сервер, и только в случае недоступности второй по списку

если укажу in_order, это будет работать ?

Kirill
11.10.2018
16:34:39
Да, будет

Alexey
11.10.2018
16:34:45
Большое спасибо =)

Mах
11.10.2018
16:58:43
Всем привет. ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{pulse_replica}/pulse/normal_summing_sharded', '{replica}', event_date, (event_date, event_time, body_id), 8192) (Взято из https://habr.com/post/317682/, 2 хоста, 2 шарда) Что здесь понимается под {pulse_replica}? Я понимаю, что название шарда. Я понимаю, что оно задаётся через макрос. Но я не понимаю, как написать макрос или задать руками.

Wolf
11.10.2018
17:02:13
ну назовите шард 1

Mах
11.10.2018
17:02:23
Wolf
11.10.2018
17:02:23
а другой шард 2

ну игде надо вместо пульса впишите 1 или 2

Для всех 4?
ну если хотите один шард то на всех

Mах
11.10.2018
17:03:00
На первых двух машинах пишем шард1, на остальных двух шард2, так?

Wolf
11.10.2018
17:03:15
ну пишите 1 и пишите 2

Mах
11.10.2018
17:03:24
ну игде надо вместо пульса впишите 1 или 2
С пульсом понятно. С этим непонятно.

Daniel
11.10.2018
18:22:51
Доброго времени! Кто знает, если была создана таблица движка Merge, например, с таким определением Merge(hits, '^WatchLog') данные при запросе к ней будут читаться только из таблиц, название которых начинается на WatchLog, из числа тех, которые существовали на момент создания этой таблицы типа Merge, или автоматически будут включаться в новые запросы и таблицы, которые будут создаваться с именем WatchLog... и после создания Merge таблицы?

Круто, похоже, то, что нужно. Если с Distributed заведётся - вообще отлично)
UPD! Merge отлично работает и над Distributed. Я проверял.

Доброго времени! Кто знает, если была создана таблица движка Merge, например, с таким определением Merge(hits, '^WatchLog') данные при запросе к ней будут читаться только из таблиц, название которых начинается на WatchLog, из числа тех, которые существовали на момент создания этой таблицы типа Merge, или автоматически будут включаться в новые запросы и таблицы, которые будут создаваться с именем WatchLog... и после создания Merge таблицы?
Прочитал, сам не понял, что спросил. В общем, суть в следующем: если у нас было 2 таблицы с именами WatchLog_moscow WatchLog_berlin и мы создали таблицу Merge с Merge(hits, '^WatchLog') а потом создали таблицу WatchLog_piter будет ли при запросе к таблице Merge производиться поиск по новой таблице WatchLog_piter в том числе, или только по первым двум?

Алексей
11.10.2018
18:31:27
Привет. Давай создадим в России автоматизированный платежный сервис для возможности осуществлять платежи юридическим лицам через расчетный счет в криптоволютных единицах

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