@clickhouse_ru

Страница 215 из 723
Рулон
28.07.2017
06:32:34
Доброе утро! Вoпрос с движком "memory" а что произойдет если таблица перестанет влезать в память?

Aleksander
28.07.2017
06:33:49
Доброе утро! Вoпрос с движком "memory" а что произойдет если таблица перестанет влезать в память?
Я не спец, но мне почему-то кажется, что все упадёт и данные пропадут, но лучше подождать ответ эксперта

Petr
28.07.2017
10:23:43
Привет, в MergeTree (<столбец с датой>, (<стобцы для индексирования...>, <столбец с датой>), 8192) я правильно понял?

Диана
28.07.2017
10:30:36
Движок принимает параметры: имя столбца типа Date, содержащего дату; выражение для семплирования (не обязательно); кортеж, определяющий первичный ключ таблицы; гранулированность индекса. Пример: Пример без поддержки сэмплирования: MergeTree(EventDate, (CounterID, EventDate), 8192) Пример с поддержкой сэмплирования: MergeTree(EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID)), 8192)

Google
Alexey
28.07.2017
11:03:56
@milovidov_an, а можно уточнить в чем эта недоделка в stable?
Данные из таблицы не передаются для последующей обработки интерпретатору запроса. В результате, на запрос возвращаются все данные таблицы, независимо от того, что написано в WHERE, какие выражения и т. п.

Alexey
28.07.2017
11:06:02
спасибо

Kirill
28.07.2017
11:31:50
У меня вопрос о том как правильно сделать "cancel" для уже выполняющегося запроса по native протоколу, сейчас я шлю Cancel (3) после чего закрываю соединение, раньше нам этого было достаточно, но теперь хочется оставлять соединение для переиспользования. Проблема в том, что если я посылаю просто Cancel то все следующие запросы не будут работать, т.к. сервер будет ругаться на то что прилетел неизвестный пакет, отсюда и вопрос как правильно выполнять запрос что писать и что пытаться вычитать от сервера на запрос Cancel, могу ли я просто выполнить запрос Cancel если в данный момент никакой запрос в данном соединении не выполняется ?

Alexey
28.07.2017
11:47:50
Нужно отправить Cancel, а затем прочитать все оставшиеся данные как обычно (должно довольно быстро прилететь EndOfStream, но при распределённой обработке, сервер пытается по-хорошему (без закрытия соединений) отменить все вложенные запросы).

> могу ли я просто выполнить запрос Cancel если в данный момент никакой запрос в данном соединении не выполняется Это навскидку не помню, можно посмотреть.

Kirill
28.07.2017
11:52:53
Спасибо

Oleksandr
28.07.2017
13:27:18
такой вопрос по поводу ReplicatedReplacingMergeTree — в доке его нет, на самом деле оно есть, но фича "выбрать последнее по ver" вроде как не работает 1) действительно ли не работает, или это я дурак? 2) если не работает, как добиться нужной фунциональности? Например, перед запросом можно делать "where id in (<find_last_id>)", но мб это не самое шустрое решение

Vladislav
28.07.2017
13:31:56
Пользуемся им, OPTIMIZE FINAL точно работает... Version вроде тоже работали. А под условия запроса точно последняя версия подпадает?

Кстати, Алексей говорил, что официально ReplicatedReplacingMergeTree поддерживается и вроде даже его документируют в ближайшее время :)

Google
Alexey
28.07.2017
13:44:23
Обычно нет необходимости самостоятельно вызывать OPTIMIZE.

Oleksandr
28.07.2017
13:47:44
sha-bang
28.07.2017
16:29:08
Приветствую всех! Не подскажете как выполнить запрос через HTTP интерфес с использованием внешних словарей? Есть вот такой запрос select dictGetString('api_keys','key', number) as k from system.numbers where k <> '' limit 33; Он отлично работает в нативном клиенте. А вот через HTTP не хочет GET: query=select%20dictGetString('api_keys'%2C'key'%2C%20number)%20as%20k%20from%20system.numbers%20where%20%20%20k%20%3C%3E%20%22%22%20limit%2033%20FORMAT% RESP:Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 86: &#34;&#34; limit 33 FORMAT JSON&#10;, expected identifier, e.what() = DB::Exception&#10;

Alexey
28.07.2017
16:57:53
Скорее всего, возникла путаница при кодировании URL. В этом случае намного удобнее отправлять запрос POST-ом, а не через параметр URL.

Ivan
28.07.2017
17:36:12
Может есть у кого какой-то пример, как сгенерировать RowBinary. Хорошо если на java/scala

нашел, спасибо

https://github.com/yandex/clickhouse-jdbc/blob/master/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java

Dmitry
28.07.2017
20:05:20
https://github.com/yandex/clickhouse-jdbc/blob/master/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java
Там рядом в тестах ещё Native есть, но он чуток сложнее

Pika
28.07.2017
23:45:05
Скажите, а гарантируется, что при выполнение SELECT groupArray(col1), groupArray(col2) FROM events элементы двух массивов будут находится в том же соответствии как они лежат в clickhouse?

Alexey
29.07.2017
00:47:30
При выполнении запроса, порядок передачи значений в разные агрегатные функции будет одинаковым. Но при разных выполнениях запроса, значения могут прийти в другом порядке.

prll
29.07.2017
01:16:43
Сборочные проблемы с слишком большим расходом памяти при компиляции и ошибкам на gcc7 поправлены.

Alexey
29.07.2017
01:39:30
Замечательно :)

Vlad
29.07.2017
05:48:40
Всем привет! А почему clickhouse возвращает символ экранирования с одинарной кавычкой? vp@b590:~$ echo "SELECT '\''" | curl 'http://localhost:8123/?' —data-binary @- \' vp@b590:~$ clickhouse-client ClickHouse client version 1.1.54245. Connecting to localhost:9000. Connected to ClickHouse server version 1.1.54245. :) SELECT '\'' SELECT '\'' ┌─\'\\\'\'─┐ │ \' │ └──────┘ 1 rows in set. Elapsed: 0.003 sec. :) exit Bye.

f1yegor
29.07.2017
21:39:26
https://github.com/facebook/zstd

Alexey
29.07.2017
21:48:13
https://github.com/facebook/zstd
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Server/config.xml#L227

f1yegor
29.07.2017
21:49:10
так и помнилось что он уже есть. новость протухла?

Alexey
29.07.2017
21:53:40
Всем привет! А почему clickhouse возвращает символ экранирования с одинарной кавычкой? vp@b590:~$ echo "SELECT '\''" | curl 'http://localhost:8123/?' —data-binary @- \' vp@b590:~$ clickhouse-client ClickHouse client version 1.1.54245. Connecting to localhost:9000. Connected to ClickHouse server version 1.1.54245. :) SELECT '\'' SELECT '\'' ┌─\'\\\'\'─┐ │ \' │ └──────┘ 1 rows in set. Elapsed: 0.003 sec. :) exit Bye.
Экранирование зависит от выбранного формата данных. Например, в формате TabSeparated данные экранируются, а в TabSeparatedRaw - нет. По-умолчанию в клиенте в интерактивном режиме используется формат PrettyCompact. Именно он выводит данные в красивых табличках. В нём данные тоже экранируются. Это сделано для того, чтобы их было легче видеть - когда в данных присутствуют переводы строк или, например, нулевые байты. Хотя тот факт, что даже при выводе в виде красивых табличек в клиенте, используется экранирование, может противоречить опыту использования, например, MySQL клиента, который не экранирует данные в аналогичном случае. При этом, правила экранирования общие для форматов TabSeparated, Values, Pretty. Например, одинарная кавычка экранируется и при выводе в TabSeparated формате, хотя это было бы не обязательно. Чтобы посмотреть данные без экранирования, добавьте в конец запроса FORMAT TabSeparatedRaw.

f1yegor
29.07.2017
21:56:42
https://twitter.com/ifesdjeen/status/890994748353327104

Google
Alexey
29.07.2017
21:58:51
ZStandard использовался в ClickHouse начиная с версии 0.x, ещё до того, как Yan Collet перешёл на работу в Facebook. В том числе, репортили баги.

Vladimir
29.07.2017
21:59:50
https://twitter.com/ifesdjeen/status/890994748353327104
1.0 вышел в августе прошлого года )

f1yegor
29.07.2017
22:00:09
сорри (

Alexey
29.07.2017
22:00:41
сорри (
Хорошая штука и лишнее внимание к ней не помешает :)

f1yegor
29.07.2017
22:05:50
небольшая exposure кх к golang девелоперам https://www.meetup.com/golang-amsterdam/events/241741582/

упомянул кх рассказывая про clickhouse_exporter

Alexey
29.07.2017
22:06:51
Интересно, сейчас посмотрим...

f1yegor
30.07.2017
01:38:10
ну на самом деле ничего интересного, но несу в массы)

Andrey
30.07.2017
09:44:13
В мастере починено dbms/src/Common/Collator.cpp:12:36: error: unknown option after ‘#pragma GCC diagnostic’ kind [-Werror=pragmas] #pragma GCC diagnostic ignored "-Wunused-private-field" А в stable нет

Aleksander
30.07.2017
10:45:17
Коллеги, а сколько нужно КХ памяти выделять? =) Наблюдаю такую картину : делаю миграцию данных из монги в кх. Дал тачке 8 гб, в какой-то момент кх ужрался 8гб и стал тормозить, вот сейчас дал 20 гб, жду, что же будет

Мигрирую в таблу с ReplacingMergeTree



Aleksander
30.07.2017
10:57:53
Мигрировало примерно 1 млн записей из 25.

Alex
30.07.2017
11:04:22
а как миграция реализована?

Aleksander
30.07.2017
11:07:15
Джава приложение на другой виртуалке

Сейчас смотрю конфиги, где-то в интернетах вычитал, что по дефолту макс память выставлена в 10гб

Alexey
30.07.2017
11:10:02
не так важно на каком языке приложение миграции и на VM или HW оно запущено

больше интересует: * сколько потоков * какие батчи и т.п.

Aleksander
30.07.2017
11:10:48
1 поток, выгребает в память по 20000 записей и инсертит в кх

Alexey
30.07.2017
11:10:59
одним батчем?

Google
Aleksander
30.07.2017
11:11:41
Не могу сказать, что это батч. Это последовательнй цикл инсертов

Alexey
30.07.2017
11:11:59
т.е. делается 20 К инсертов?

Aleksander
30.07.2017
11:12:08
верно

Alexey
30.07.2017
11:12:10
для 20К строк

Admin
ERROR: S client not available

Aleksander
30.07.2017
11:12:16
Да

Alexey
30.07.2017
11:12:17
но это же антипатерн

Aleksander
30.07.2017
11:12:32
Я сделал это за 5 минут =)

Alexey
30.07.2017
11:12:36
потом CH захлебнется делать мержы

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

начни вот с этих 20K

Aleksander
30.07.2017
11:13:25
Ок, но есть же предел в пожирании памяти?

Он работал довольно быстро и так. Но ужирался памятью через полчаса и тормозил

Alexey
30.07.2017
11:14:33
в логах что-то было подозрительное?

придел какой-то есть

но 8г это конечно не тот объем под который заточены дефолт конфиги CH, как я понял

Aleksander
30.07.2017
11:16:12
Пока подозрительного ничего не видел. Но походу от моих перераспределений памяти, сдохла монга. И все сломалось =)

Ладно - пойду оптимизирую на батчи. И почитаю про настройки памяти в кх

@lexa_work а что необходимо для того, чтобы оно работало в батче? Просто передать n инсертов разделенных ;?

Alexey
30.07.2017
11:22:16
один инсерт с множеством VALUES

Google
Aleksander
30.07.2017
11:22:33
Понял, спс

@lexa_work побыстрее стало намного с батчем

вообще космос

спасибо

Alexey
30.07.2017
12:03:09
Это спасибо разработчикам за такую бомбу

Aleksander
30.07.2017
12:05:26
Ну, если бы ты не настоял, я бы 29 часов мигрировал бы думая, что и так сойдет

Сейчас скажу сколько мне сэкономило времени, как запущу

f1yegor
30.07.2017
12:08:35
Ну, если бы ты не настоял, я бы 29 часов мигрировал бы думая, что и так сойдет
вообще не понимаю людей которым лень прочитать документацию и понять как что работает, а потом удивляться в неожиданных местах

в контексте баз данных. это

же не на один день

Aleksander
30.07.2017
12:09:45
Попробую изучить более детально, и если все-таки не смогу ничего сделать - еще раз напишу =)

f1yegor
30.07.2017
12:11:22
для скала я порекомендовал бы наш батчер https://github.com/crobox/clickhouse-scala-client, но на джава код может выглядеть достаточно коряво

Aleksander
30.07.2017
12:11:51
У меня майбатис. Он тоже умеет батчить =)

f1yegor я посмотрю, спасибо. У меня одно приложений на скале со спарком

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