@clickhouse_ru

Страница 59 из 723
nikoinlove
31.01.2017
23:06:34
а зукипер к такому количеству серверов особенный какой-то нужен, тоже большой?)

Alexey
31.01.2017
23:08:42
Нет, хватает обычного, на три сервера. Причём, он обслуживает в сумме много кластеров - где-то около 600 серверов. В ZK где-то в районе 10 млн. нод получается. Какая-то настройка ZK нужна (и какие-то специальные параметры запуска Java, но я их не помню).

Evgeniy
31.01.2017
23:37:53
а есть планы на spil to disk? чтобы медленно но не OOM

Alexey
31.01.2017
23:39:32
Для GROUP BY уже есть приличный spill to disk - см. max_bytes_before_external_group_by в документации. Также есть для ORDER BY (работает слегка медленнее, чем мог бы). А для JOIN, IN, DISTINCT - нет.

Google
Igor
01.02.2017
06:27:35
а почему некоторые теги в репозитории имеют названия типа v1.1.4?)

Vladimir
01.02.2017
10:43:07
Добрый день, подскажите почему у меня файлики с uint8 занимают в десятки раз больше места, чем date, datetime? Я думал они должны быть соизмеримы. MergeTree таблица

Dmitry
01.02.2017
10:54:14
скорее всего потому, что в uint8 много уникальных значений и они хуже сжимаются

Igor
01.02.2017
11:06:41
обновил формулу для homebrew, кто-нибудь может потестить у себя? на 10.11.6 у меня норм собирается https://github.com/hatarist/homebrew-clickhouse

Dmitry
01.02.2017
11:12:52
Добрый день, не подскажите, как из DateTime вытащить только время? в toString нельзя указать формат, а алгоритм работы функции toHour, зависит от летнего/зимнего времени

Dmitry
01.02.2017
11:14:19
а что значит только время? в каком формате?

Igor
01.02.2017
11:18:35
:) SELECT now() AS dt, substring(toString(dt), 12, 8) FORMAT CSV "2017-02-01 14:17:04","14:17:04" а так в лоб не подойдет?

Dmitry
01.02.2017
11:19:25
мне нужно сделать "периодический" фильтр, т.е. дата не важна, а важен временной период

Igor
01.02.2017
11:19:51
а, не подойдет А toTime()?

f1yegor
01.02.2017
11:20:19
какая была настройка чтобы читать несколько реплик на одном шарде при distributed table?

Dmitry
01.02.2017
11:21:31
а, не подойдет А toTime()?
toTime, вроде как переводит на unix time, а дата остается

f1yegor
01.02.2017
11:21:35
нашел. max_parallel_replicas

@milovidov_an Would you suggest a single beefy machine instead of a cluster of machines?

Google
Pavel
01.02.2017
11:47:48
это вопрос не к разработчикам я думаю, это скорее архитектурный момент

распределенная установка дает много преимуеств, но при этом имеет кучу недостатков :)

papa
01.02.2017
11:59:05
мне нужно сделать "периодический" фильтр, т.е. дата не важна, а важен временной период
если дата не важка, но есть функции toHour/toMinute/toSecond, а также упомянутый выше toTime(). toTime переводит времена в к времени фиксированного дня, например SELECT arrayMap(x -> toTime(now() + (x * 900)), range(50)), что кажется тоже позволяет сделать нужный фильтр, хотя он и будет выглядеть не очевидно.

Dmitry
01.02.2017
12:00:36
toHour возращает число взависимости от летнего/зимнего времени?

Valeriy
01.02.2017
12:08:45
нашел. max_parallel_replicas
Есть подозрение, что если Distributed-таблица располагается на том же сервере, что и одна из входящих в нее реплик, то max_parallel_replicas игнорируется, происходит просто локальное чтение.

papa
01.02.2017
12:25:03
toHour возращает число взависимости от летнего/зимнего времени?
судя по SELECT count() AS hs, d FROM ( SELECT toHour(toDateTime((number * 3600) + 1800) AS dt) AS h, toDate(dt) AS d FROM system.numbers LIMIT 300000 ) GROUP BY d HAVING hs != 24 да.

Vladislav
01.02.2017
12:32:30
обновил формулу для homebrew, кто-нибудь может потестить у себя? на 10.11.6 у меня норм собирается https://github.com/hatarist/homebrew-clickhouse
[100%] Built target analyze_result_of_query [100%] Linking CXX static library libclickhouse-server.a [100%] Built target clickhouse-server Scanning dependencies of target clickhouse [100%] Building CXX object dbms/src/Server/CMakeFiles/clickhouse.dir/main.cpp.o [100%] Linking CXX executable clickhouse [100%] Built target clickhouse Error: inreplace failed /private/tmp/clickhouse-20170201-72617-j0obe1/ClickHouse-1.1.54144-stable/dbms/src/Server/config.xml: expected replacement of "/var/lib/clickhouse/" with "/usr/local/var/clickhouse/"

Igor
01.02.2017
12:38:06
блин, и правда. спасибо, исправил

Vladislav
01.02.2017
12:52:40
Scanning dependencies of target clickhouse [100%] Building CXX object dbms/src/Server/CMakeFiles/clickhouse.dir/main.cpp.o [100%] Linking CXX executable clickhouse [100%] Built target clickhouse ==> Cleaning ==> Finishing up ln -s ../Cellar/clickhouse/1.1.54144/bin/clickhouse-client clickhouse-client ln -s ../Cellar/clickhouse/1.1.54144/bin/clickhouse-server clickhouse-server ==> Caveats The configuration files are available at: /usr/local/etc/clickhouse-client/ /usr/local/etc/clickhouse-server/ The database itself will store data at: /usr/local/var/clickhouse/ If you're going to run the server, make sure to increase maxfiles limit: https://github.com/yandex/ClickHouse/blob/master/MacOS.md ==> Summary ? /usr/local/Cellar/clickhouse/1.1.54144: 7 files, 55.3M, built in 12 minutes 33 seconds workers-MacBook-Pro:build user$

:)

Igor
01.02.2017
12:53:20
уии, спасибо большое. у вас 10.12?

Vladislav
01.02.2017
12:54:13
10.12.3 (16D32)

prll
01.02.2017
13:05:59
Вчера наконец было закоммичено изменение имени пользователя в пакете с metrika на clickhouse и пути с /opt/clickhouse на /var/lib/clickhouse . костыли для плавного перехода есть.

Алексей
01.02.2017
13:50:25
Господа, а как дебажить Code: 293, e.displayText() = DB::Exception: Cannot authenticate in MongoDB: server returned response for 'authenticate' command that has field 'ok' missing or having wrong value:

при том что логопас верный и это primary

а если попробовать с хоста напрямую через команду mongo --host .... всё пускает

Alexey
01.02.2017
13:54:04
@milovidov_an Would you suggest a single beefy machine instead of a cluster of machines?
Если в сумме по ресурсам (ядра, оперативка) машина такая же как кластер, то лучше одна толстая машина - так как работа по потокам распределяется более равномерно, и нет передачи данных между серверами.

Если в сумме по ресурсам (ядра, оперативка) машина такая же как кластер, то лучше одна толстая машина - так как работа по потокам распределяется более равномерно, и нет передачи данных между серверами.
Для очень толстых машин это может быть не так (например, может плохо масштабироваться из-за скорости оперативки и несколько машин будет лучше), но такие вряд ли получится достать.

toHour возращает число взависимости от летнего/зимнего времени?
toHour возвращает номер часа по "человеческому" времени. Например, если стрелки переводили назад, то в сутках в течение двух часов будет одно значение toHour.

Господа, а как дебажить Code: 293, e.displayText() = DB::Exception: Cannot authenticate in MongoDB: server returned response for 'authenticate' command that has field 'ok' missing or having wrong value:
Эта функциональность (работа с MongoDB со включенной аутентификацией) не тестировалась отдельно. Там обычная аутентификация или включено что-нибудь особенное?

Google
Pavel
01.02.2017
14:02:07
в монге недавно аутенифтицикацию поменяли, там несколько ее типов

Алексей
01.02.2017
14:02:16
на одном сервере работает на другом не работает.

разница в серверах в том что один находится на том же сервере где кликхаус а второй доступен по сети

Alexey
01.02.2017
14:04:46
Да, у нас только один тип поддерживается - тот, который самый старый.

Наверное, для второго сервера включается какая-то другая аутентификация.

Pavel
01.02.2017
14:05:18
можно новую монгу к нему принудить, но там немного магии

нужно находу откатить версию схемы аутентификации на старую и пересоздать юзера

если критично - могу дома найти свои мучения с монгой :)

Alexey
01.02.2017
14:05:54
Я совсем не разбираюсь в Монге, но может быть, можно поставить mongos на localhost, который уже смотрит куда надо.

Pavel
01.02.2017
14:07:07
в монге есть крутой новый драйвер для C++ 11

я им активно пользуюсь и впечатления - очень приятный, он точно умеет новый механизм аутентификации

ну и в отличие mongo-c... ну небо и земля в общем

https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/

Алексей
01.02.2017
14:12:03
Я совсем не разбираюсь в Монге, но может быть, можно поставить mongos на localhost, который уже смотрит куда надо.
это в случае действительно большой монги с шардингом. боюсь такая для мен ябудт оверкилом.

вариант с монгой в режиме только арбитр ща проверю. спасибо

Alexey
01.02.2017
14:14:20
в монге есть крутой новый драйвер для C++ 11
Тоже смотрел. Выглядит Ок. Правда так как достаточно много зависимостей, был только вариант его использовать под флагом сборки - то есть, пользователю понадобится собрать его отдельно по инструкции (с совпадающими опциями сборки, влияющими на ABI), а потом явно включать при сборке ClickHouse. А также был готовый драйвер из Poco. Крайне примитивный, рассчитанный под старую версию протокола. Зато доступен по-умолчанию при сборке, без флагов.

Google
Evgeny
01.02.2017
14:33:54
всем привет. столкнулся с проблемой вставки. больше 10 метров не вставяет одной записью. eproydakov@eproydakov-HP-ZBook:~$ clickhouse-client —version ClickHouse client version 1.1.54134. Табличка :) create table test ( date Date, str1 String, str2 String, str3 String ) engine = MergeTree(date, (date, str1, str2), 16384); Генерилка данных. clang++ -std=c++11 dump.cpp -o gen dump.cpp ./gen 300000 data.txt Собственно сама вставлка из консоли. eproydakov@eproydakov-HP-ZBook:~/workspace$ curl 'http://localhost:8123/?query=INSERT%20INTO%20test%20(date,%20str1,%20str2,%20str3)%20VALUES' —data-binary "@./data.txt" Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected , before: 6, 'str1', 'str2', 'str290786'), (290787, 'str1', 'str2', 'str290787'), (290788, 'str1', 'str2', 'str290788'), (290789, 'str1', 'str2', 'str290789'), (290790, ': (at row 273087), e.what() = DB::Exception

prll
01.02.2017
14:47:51
пример идеального баг репорта 8)

Alex
01.02.2017
15:14:00
Проблема в первой колонке - она типа Date, но в неё вставляются числа

Pavel
01.02.2017
15:14:27
мммм, офтопный вопрос, а что по поводу клиента для С++ 11/14/17?

Alex
01.02.2017
15:17:10
так как первая колонка не в формате Date, парсер VALUES пытается распарсить число в виде sql-выражения, а он очень ограниченный

если хочется даты вставлять, лучше их писать в виде '2017-02-01'

Alexey
01.02.2017
15:18:16
мммм, офтопный вопрос, а что по поводу клиента для С++ 11/14/17?
Есть прототип клиента от https://github.com/artpaul/clickhouse-cpp Там далеко не всё поддерживается, это экспериментальная разработка.

Pavel
01.02.2017
15:19:49
о, классно! мне в принципе требуется для начала просто загрузка данных в больших батчах

совсем-совсем в идеале со сжатием

Yaroslav
01.02.2017
15:27:31
Вроде нормально вставлять числа, судя по доке

Alex
01.02.2017
15:32:14
можно отключить парсинг выражений в VALUES настройкой input_format_values_interpret_expressions=false

тогда сразу упадёт

Дока скорее про то, как даты хранятся...

Yaroslav
01.02.2017
15:45:36
так если они хранятся как unsigned int и ты ему даешь unsigned int - в чем проблема?)

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

Alex
01.02.2017
16:05:57
тем не менее парсинг из формата 'YYYY-MM-DD' будет эффективнее

и без багов :)

Pavel
01.02.2017
16:07:00
вопрос в преобразовании в этот текстовый формат, я думаю

Google
Pavel
01.02.2017
16:09:23
все семейство функций конвертеров в текстовую дату очень тормозное и тащит за собой кучу snprintf* и прочей ереси

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

с точки зрения оверхеда и лишних перекодирований - было совершенно чудесное

papa
01.02.2017
16:14:07
вопрос в преобразовании в этот текстовый формат, я думаю
в этом случае наверное и sql не надо использовать, а заливать сразу бинарные данные.

Pavel
01.02.2017
16:14:52
вопрос в том, как их представлять для залива в чисто бинарных

"Native - The most efficient format. Data is written and read by blocks in binary format. For each block, the number of rows, number of columns, column names and types, and parts of columns in this block are recorded one after another. In other words, this format is "columnar" - it doesn't convert columns to rows. This is the format used in the native interface for interaction between servers, for using the command-line client, and for C++ clients."

хммм, слона и не заметил :/

Roman
01.02.2017
16:22:57
еще RowBinary посмотри

Valeriy
01.02.2017
16:36:43
Говорят, есть хак - задать "<default_database>default</default_database>" в remote_servers/replica_only/shard/replica. Тогда будет работать распределенно, но вроде только в БД default ходить.

Yaroslav
01.02.2017
16:39:26
тем не менее парсинг из формата 'YYYY-MM-DD' будет эффективнее
Как может быть эффективнее цепочка с лишней операцией? )

Alex
01.02.2017
16:42:30
Попробуйте измерить. Ну или загляните в код: https://github.com/yandex/ClickHouse/blob/master/dbms/src/DataStreams/ValuesRowInputStream.cpp#L46

для пущей эффективности выше предлагали RowBinary - там действительно дата представляет из себя два байта, которые без лишнего парсинга скопируются прямо в значение

Aleksey
01.02.2017
19:02:10
Привет! А как будет вести себя CollapsingMergeTree, если в составе первичного ключа будут колонки из nested поля?

Схлопывание будет происходить только при полном совпадении всего массива?

И есть ли функции для сравнения массивов? Что-то не нашёл в документации

Alexey
01.02.2017
19:19:28
Схлопывание будет происходить только при полном совпадении всего массива?
Да. На мой взгляд, массивы в первичном ключе - весьма громоздко. А с элементами Nested структур в первичном ключе мы не пробовали.

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