
Dmitrii
15.05.2018
12:59:01

papa
15.05.2018
13:01:05
with qqq as qs select qs[1], qs[2], qs[3]

Roman
15.05.2018
13:26:54
это баг или фича? пытаюсь распарсить json строку
select visitParamExtractString('{"text":"<meta http-equiv=\"X-UA-Compatible\""}', 'text') выводит
<meta http-equiv=
это нормально, что КХ съедает экранирование?

Google

Roman
15.05.2018
13:28:42
нормально работает, только если сделать двойное экранирование
SELECT visitParamExtractString('{"text":"<meta http-equiv=\\"X-UA-Compatible\\""}', 'text’)

Tima
15.05.2018
13:34:32
Делаю запрос к таблице с MySQL-движком:
SELECT ... FROM users u WHERE match(u.email, 'bk.ru')
Получаю такую ошибку
Code: 1000. DB::Exception: Received from localhost:9000, ::1. DB::Exception: mysqlxx::BadQuery: Operand should contain 1 column(s) (localhost:3306).
Это я что-то не так в запросе указал или работа с регулярками для движка работает некоректно?

Maxim
15.05.2018
13:39:34
Привет
Вот такая проблема:
Материализованная вью вычитывает из Кафки (таблицы). И в таблице и во вью есть nullable поля, схемы одинаковые. Из Кафка таблицы данные исчезают, а в материализованную вью не попадают. Есть подозрение, что проблема именно в nullable полях. В логах ничего нет.

Roman
15.05.2018
13:40:34
похоже КХ некорректно выводит \” - он удаляет экранирование оставляя только ”
соот-но невозможно распарсить корректный json если достать его из кх

Alexander
15.05.2018
13:47:34

Dmitrii
15.05.2018
14:10:39

Andrey
15.05.2018
14:11:04
Доброго дня!
Есть такая конфигурация: кластер с двумя шардами, на каждом из которых есть по 2 реплики. На каждой реплике есть таблица с движком ReplicatedMergeTree. На основе этих таблиц созданы таблицы Distributed. Сейчас в Distributed-таблице порядка 20 миллионов строк.
Каждую минуту происходит insert в ~2500 строк в одну из реплицируемых таблиц. Так вот иногда insert "залипает" на неопределённое время (до нескольких часов), не выводя никакого сообщения об ошибке(например, "Too much parts. Merges are processing significantly slower than inserts). Не подскажете, в с чем это может быть связано?

Tima
15.05.2018
14:24:37


Andrey
15.05.2018
14:38:15
1. Не выводит.
2. Брался за основу этот репозиторий (https://github.com/count0ru/k8s-clickhouse-v2), config.xml оттуда. Добавилось internal_replication в true.
Таблицы выглядят так:
CREATE TABLE default.distributed_summaries_r2 (
eventDate Date DEFAULT toDate(eventTime),
eventTime DateTime,
pair String,
volume Float64,
high Float64,
low Float64,
last Float64
) ENGINE = Distributed(k8s-prod, default, summaries_r2)
CREATE TABLE default.summaries_r2 (
eventDate Date DEFAULT toDate(eventTime),
eventTime DateTime,
pair String,
volume Float64,
high Float64,
low Float64,
last Float64
) ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/summaries_r2',
'{replica}',
eventDate,
pair,
(eventDate, pair, eventTime),
8192
)
Поискал в system.replication_queue по таблице. Вот такое сообщение: "Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found: clickhouse-2-0.crypto, e.what() = Host not found"


Wolf
15.05.2018
15:01:17
ну у вас в шардах прописан он и не находит его имя

Google

Wolf
15.05.2018
15:01:29
используйте нормальные доменные имена или просто айпи

Andrey
15.05.2018
15:02:26
Извините, не совсем понятно, что именно поменять и где?

Maxim
15.05.2018
15:03:41
Сделали эксперимент без nullable полей - все заработало
Это бага или что-то мы неправильно готовим?

Wolf
15.05.2018
15:04:28

Ilya
15.05.2018
15:04:39

Wolf
15.05.2018
15:04:40
что это черт подери за имя то для сервера clickhouse-2-0.crypto
откуда оно должно знать куда оно ведет

Andrey
15.05.2018
15:05:04

Wolf
15.05.2018
15:05:37
@ansible:~# ping clickhouse-2.crypto
ping: unknown host clickhouse-2.crypto
нет такого в днсе

Ilya
15.05.2018
15:05:53

Wolf
15.05.2018
15:06:03
ну очевидно из лога что и в вашем тоже нет

Andrey
15.05.2018
15:06:14

Wolf
15.05.2018
15:06:25
каком кубе то
провероьте на кх сервере он точно не резолвит

Andrey
15.05.2018
15:06:44
kubernetes
Собственно, изначально он работает, спустя время начинаются такие ошибки

Wolf
15.05.2018
15:07:08
ну не резолвит он там днс из лога это очевидно

Google

Wolf
15.05.2018
15:07:24
используйте норм доменные имена и будет ок
ну и учитесь готовить кубернетес

Kirill
15.05.2018
15:07:49
Я, вот не помню, делали TTL для DNS или нет, если нет, то надо сделать - это от части решит проблему.

Andrey
15.05.2018
15:11:03
Есть момент, в конфиге прописаны имена для сервисов (грубо говоря прокси над инстансом clickhouse) и у них имена clickhouse-0/1/2/3.crypto, они резолвятся и кластер изначально при первичной инициализации работает
Вопрос, зачем он пытается соединиться по прямым адресам нод, а не тем что прописано?
В табличке clusters в поле host_name имена корректные

Wolf
15.05.2018
15:12:25

Andrey
15.05.2018
15:13:28
они прописаны в конфиг
там это https://github.com/count0ru/k8s-clickhouse-v2/blob/master/build_image/config.xml#L63
А в этом поле если будет hostname, он будет следить за обновлением ip?
<interserver_http_host>NODENAME.NAMESPACE</interserver_http_host>

Kirill
15.05.2018
15:15:07

Andrey
15.05.2018
15:15:07
В общем, проблема скорее всего решится. Спасибо)

Kirill
15.05.2018
15:16:11
А зачем вам Кубернетис?

Andrey
15.05.2018
15:18:07
Потому что в нём удобно держать обвязку и всё прочее.
Инстансы clickhouse хранят данные напрямую на хостовых машинах (baremetal)

Kirill
15.05.2018
15:19:33
ansible + lxd решают эти задачи куда лучше

Andrey
15.05.2018
15:21:10
Думаю, эти вещи вообще не сравнимы.

Kirill
15.05.2018
15:24:18
Если хотите работать с КХ в контейнерах, то лучше уже сейчас начинать отказываться от Docker и kubernetes )

Andrey
15.05.2018
15:25:00
Почему? Я понимаю, что держать prod БД в кубе - это порочная практика. Но иногда, когда очень хочется, то можно
Так то да, как external serivce можно подключить

Kirill
15.05.2018
15:27:52
В кубернетисе много лишнего и ненужного, у докера "сложные" отношения с лимитами и прочей прелестью контейнеров. LXC/LXD на ванильном ядре гораздо лучше или, если есть возможность, OpenVZ с их ядрами

Andrey
15.05.2018
15:30:07
Что lxc, что docker, все работают по одному принципу.

Google

Kirill
15.05.2018
15:31:03
Только получается у них по-разному )

Andrew
15.05.2018
15:31:05

Andrey
15.05.2018
15:32:05
Если будет нужно, я вынесу базу на железо. Пока удобнее так.

Pavel
15.05.2018
15:44:24
Привет всем
Если я создаю таблицу с движком MergeTree, у меня много стобцов и каждый из них может использоваться в запросе как фильтр, значит ли это что все мои столбцы мне нужно передавать в первичный ключ?

papa
15.05.2018
15:47:58
нет, не нужно

Pavel
15.05.2018
15:48:11
почему?

papa
15.05.2018
15:49:07
потому что первичный ключ задает сортировку, сортировка у вас одна, запросы без условия на префикс ключа все равно дадут фуллскан

Pavel
15.05.2018
15:49:47
тогда первичный ключ у меня должен быть пустой?

papa
15.05.2018
15:49:59
то что всегда будет фильтрации в запросе, то добавляйте, добавление остальных атрибутов скорее всего ничего вам не ускорит.
если у вас пересечение всех фильтров в общем случае пустое, то можно начинать разговаривать на предмет того, а что же вы делаете.

Pavel
15.05.2018
15:52:11
я не очень точно выразился, в каждом запросе есть day

papa
15.05.2018
15:53:10
уже что-то. хотя бы будет по чему партиционировать

Wolf
15.05.2018
15:53:48
ну если есть дей то какая разница он будет разжить нужную колонку по дню
надо только чтобы парты по дням партицировались

Pavel
15.05.2018
15:54:40

Wolf
15.05.2018
15:55:19

papa
15.05.2018
15:56:35

Pavel
15.05.2018
16:00:23

Wolf
15.05.2018
16:01:37
ну тогда все будет просто летать )))

Google

Pavel
15.05.2018
16:02:32
надеюсь, сейчас просто у нас запросы простые работают десятки минут

Wolf
15.05.2018
16:02:57
ох вы удивитесь как зальете данные в кх

Pavel
15.05.2018
16:03:12
надеюсь :)

Wolf
15.05.2018
16:03:47
просто там в сотни раз или даже в тысячи мне кажется ускорились некоторые запросы у нас, я когда их впервые гонял просто не верил глазам , бац несколько секунд и готово

Pavel
15.05.2018
16:04:07
ух :)

Diomid
15.05.2018
16:12:33
Подскажите пожалуйста, есть у меня 3 сервера. На каждом стоит КХ. Соответственно я хочу из них сделать реплику. Что и главное где надо указать в конфиге?
Сразу попрошу помочь со вторым вопросом. Есть у меня также кластер zookeeper. Я правильно понимаю, что мне достаточно в конфиге КХ указать
<zookeeper>
<node index="1">
<host>server1</host>
<port>2181</port>
</node>
<node index="2">
<host>server2</host>
<port>2181</port>
</node>
<node index="3">
<host>server3</host>
<port>2181</port>
</node>
</zookeeper>
Спасибо

Alex
15.05.2018
16:13:20

Kirill
15.05.2018
17:27:02

Diomid
15.05.2018
17:45:24

Wolf
15.05.2018
18:29:00

Diomid
15.05.2018
18:30:32
А как иначе без таких таблиц реплицировать данные? В чем смысл от только зуукипера?

Wolf
15.05.2018
18:31:41
дистрибьютед таблтицы не имеют отношения к реплике если вы используете реплику через зукипер, а не через них

Diomid
15.05.2018
18:35:16
Если честно, то я теперь совсем запутался.