@clickhouse_ru

Страница 385 из 723
Mike
09.01.2018
10:06:33
КХ за 0.007

Дмитрий
09.01.2018
10:21:09
Попробуйте партиционировать данные в вашей базе аналогично кликхаусу на какие-нибудь диапазоны подходящие под ваши запросы. Если вам точно нужен кх в этом месте, ~1000 строчных инсертов будет ок, если они прилетают не за один раз а размазанно в течении суток. Buffer engine может не подойти, т.к. данных очень мало, и скидываться на диск они будут редко, что когда-нибудь приведет к потерям данных, например при остановке кх-сервера. Либо при закрученном flush-интервале можно сохранять их чаще, но тогда смысла от этого не много - блоки будут такого же маленького размера, чтоб будет мешать merge-операции. Поставьте в крон OPTIMIZE, это должно помочь.

Александр
09.01.2018
10:26:03
Попробуйте партиционировать данные в вашей базе аналогично кликхаусу на какие-нибудь диапазоны подходящие под ваши запросы. Если вам точно нужен кх в этом месте, ~1000 строчных инсертов будет ок, если они прилетают не за один раз а размазанно в течении суток. Buffer engine может не подойти, т.к. данных очень мало, и скидываться на диск они будут редко, что когда-нибудь приведет к потерям данных, например при остановке кх-сервера. Либо при закрученном flush-интервале можно сохранять их чаще, но тогда смысла от этого не много - блоки будут такого же маленького размера, чтоб будет мешать merge-операции. Поставьте в крон OPTIMIZE, это должно помочь.
У нас по крону выполняется OPTIMIZE replacing merge tree таблицы, но она реплицируемая и был случай когда сложили весь кластер из-за тяжелого мерджа. А еще тут был прикол из-за отвалившихся реплик эти OPTIMIZE запросы набились в очередь в 1000 запросов и сервер никакие запросы не выполнял...

Дмитрий
09.01.2018
10:30:41
У вас для replacing merge tree был тяжелый запрос с final, или очень много маленьких кусков? К тому же видимо слишком часто, т.к. набить 1000 запросов кроном - нужно очень постараться. Есть предположение что можно выставить queryId для OPTIMIZE запроса, чтоб не натолкнуться на проблему очереди из таких запросов.

Google
Александр
09.01.2018
10:33:05
У вас для replacing merge tree был тяжелый запрос с final, или очень много маленьких кусков? К тому же видимо слишком часто, т.к. набить 1000 запросов кроном - нужно очень постараться. Есть предположение что можно выставить queryId для OPTIMIZE запроса, чтоб не натолкнуться на проблему очереди из таких запросов.
У меня строк не много, не больше 100 000. Просто данные обновляются непредсказуемо и пишутся в таблицу через Buffer таблицу, а OPTIMIZE больше для ускорения SELECT запросов, что бы много файлов не читать. В какой то момент у нас рассыпался рейд на сервере (это произошло как раз 2 вроде бы января) и реплицируемые запросы на трех нода почему то начали копиться в очередь. Причем они фактически никакой нагрузки не создавали а просто висели в очереди.

Сергей
09.01.2018
11:16:05
Mike
09.01.2018
11:20:28
Сергей мускул у нас ложится из-за like по varchar

Сергей
09.01.2018
11:30:04
Сергей мускул у нас ложится из-за like по varchar
Дмитрий как раз к этому и вел, что можно разбить таблицу на небольшие партиции, а затем уже внутри каждой поиск будет проходить быстро

Но это опять же «если есть возможность»

Если принципиально нужен фуллскан каждый раз, то это не вариант

Mike
09.01.2018
11:35:54
и fullscan и построение отчетов и граяиков за произвольные промежутки

Konstantin
09.01.2018
11:39:17
Всем привет! подскажите если от пользователя с правами read only в dBeaver не могу сделать запросы: DB::Exception: Cannot override setting (max_result_rows) in readonly mode, e.what() = DB::Exception зачем он настройки перезаписывает?

Felixoid
09.01.2018
11:54:04
Cargeh
09.01.2018
12:09:03
Не нашел в документации инфы по смене имени колонки. Есть какой-то вариант без пересоздания столбца и без перекачивания данных из старого в новый?

Konstantin
09.01.2018
12:20:43
Felixoid
09.01.2018
12:21:11
в настройках CH /etc/clickhouse-server/users.d/

Google
Pavel
09.01.2018
14:18:16
есть вопросик по словарям, подготовил скрипт на шелле, которые возвращает CSV

делаю тестовую выборку из словаря

и CH насмерть виснет

2018.01.09 14:16:47.724069 [ 5 ] <Debug> executeQuery: (from [::1]:45166, query_id: 628e55f9-101d-4609-bbd9-5073abc2c77b) select dictGetString('maxmind_geoip_country', 'represented_country_geoname_id', toUInt64(IPv4StringToNum('11.22.33.44'))) 2018.01.09 14:16:47.724485 [ 5 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete 2018.01.09 14:16:47.731587 [ 5 ] <Trace> ExecutableDictionarySource: loadAll Executable: /bin/bash -e /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash

вручную от имени юзера кликхауса скрипт выполняется и возвращает CSV корректно

судя по стрейсу - CH по-прежнему читается что-то читать с STDOUT скрипта

ну и опять же судя по strace

[pid 19783] mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb57b7cc000 [pid 19783] read(22, "network,geoname_id,registered_co"..., 131072) = 131072 [pid 19783] write(1, "network,geoname_id,registered_co"..., 131072 <unfinished ...> [pid 19751] <... read resumed> "network,geoname_id,registered_co"..., 1048576) = 131072 [pid 19751] futex(0x66a28a0, FUTEX_WAKE_PRIVATE, 2147483647) = 0 [pid 19751] wait4(19778, <unfinished ...> [pid 19783] <... write resumed> ) = 131072 [pid 19783] read(22, "29,3017382,3017382,,0,0\n5.135.42"..., 131072) = 131072 [pid 19783] write(1, "29,3017382,3017382,,0,0\n5.135.42"..., 131072 <unfinished ...>

идут попытки чтения данных из выдачи моего скрипта ?

Pavel
09.01.2018
14:22:57
#!/bin/bash -e FILE_DATE="20180109" TMP_FOLDER=`mktemp -d` cd $TMP_FOLDER wget --quiet "https://download.maxmind.com/app/geoip_download?edition_id=GeoIP2-Country-CSV&date=$FILE_DATE&suffix=zip&license_key=fake" -Ogeoip.zip unzip -q geoip.zip cd GeoIP2-Country-CSV_$FILE_DATE cat GeoIP2-Country-Blocks-IPv4.csv

как-то вот такой

ну и формат CSV внутри

network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider 1.0.0.0/24,2077456,2077456,,0,0 1.0.1.0/24,1814991,1814991,,0,0 1.0.2.0/23,1814991,1814991,,0,0 1.0.4.0/22,2077456,2077456,,0,0 1.0.8.0/21,1814991,1814991,,0,0 1.0.16.0/20,1861060,1861060,,0,0

Tima
09.01.2018
14:24:59
Это конечно страный, совет, но всё же - попробуй в скарипте заменить выччисление на вывод сразу ответа. Типа echo "содежимое csv"

Может где-то чего-то нет и скрип не доходит до конца выполнения

Pavel
09.01.2018
14:26:02
я могу попробовать тупо вернуть несколько десятков строк из скрипта напрямую

/bin/bash -e /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider 1.0.0.0/24,2077456,2077456,,0,0 1.0.1.0/24,1814991,1814991,,0,0 1.0.2.0/23,1814991,1814991,,0,0 1.0.4.0/22,2077456,2077456,,0,0

Google
Pavel
09.01.2018
14:29:08
вот так сделал

ну и код

cat /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash #!/bin/bash -e echo "network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider" echo "1.0.0.0/24,2077456,2077456,,0,0" echo "1.0.1.0/24,1814991,1814991,,0,0" echo "1.0.2.0/23,1814991,1814991,,0,0" echo "1.0.4.0/22,2077456,2077456,,0,0"

оооо, появилась человеко-понятная ошибка ?

спасибо ? Одно поле дважды в конфиге указал и парсер вис на нем

Anton
09.01.2018
15:04:26
Кто-нибудь знает? В FORMAT CSV можно указать разделитель?

Egor
09.01.2018
15:09:54
Кто-нибудь знает? В FORMAT CSV можно указать разделитель?
А какой нужен? если хотите tab — есть format TabSeparated

Anton
09.01.2018
15:10:18
А какой нужен? если хотите tab — есть format TabSeparated
точку с запятой, чтобы сразу в эксельчик манагерам

Egor
09.01.2018
15:11:07
точку с запятой, чтобы сразу в эксельчик манагерам
Ясно.. Если в доке нет, то вряд ли возможно)

papa
09.01.2018
15:11:18
а в екселе при открытии файла нельзя разделитель выбрать?

Александр
09.01.2018
15:12:13
Сергей
09.01.2018
15:45:17
Вообще там настроить это можно
не только выбрать, но и задать произвольный

оу, не то процитировал, но смысл вроде не потерялся

Stas
09.01.2018
16:10:53
Коллеги, а как лучше обойти ситуацию когда нужен словарь с NULL которые пока не работают? Пока придумал только заменять в источникетнк псевдо-число и далее оборачивание функции вызова словаря if’ами. Может лучше решение есть?

Stas
09.01.2018
16:13:17
Кмк, хорошее решение
Из-за ограничения словарей у меня там костыль-на костыле! Вместо complex string ключа + time range у меня хэши+time range :(

Mike
09.01.2018
17:16:00
а в екселе при открытии файла нельзя разделитель выбрать?
При импорте файла можно разделитель выбрать, по крайней мере в экселе 2016 на маке

Aliaksei
09.01.2018
18:57:49
слегка офтопик наверное: кокой редактор или IDE используют разработчики ClickHouse?

Alexey
09.01.2018
22:05:25
Коллеги, а как лучше обойти ситуацию когда нужен словарь с NULL которые пока не работают? Пока придумал только заменять в источникетнк псевдо-число и далее оборачивание функции вызова словаря if’ами. Может лучше решение есть?
Недавно как раз смотрел на эту задачу. Нужно уметь указывать NULL в качестве default и пропускать NULL при чтении источника. Или нужно уметь читать NULL из источника, хранить их в словаре; а в качестве default возвращать что-то другое?

Google
Stas
09.01.2018
22:06:48
Alexey
09.01.2018
22:08:13
Хотелось бы именно не пропускать NULL, а если значение в источнике NULL - возвращать именно его... что в качестве default возвращать не так сильно болит :)
Это достигается первым вариантом - в нём NULL будет возвращаться, если в источнике нет значения или если в источнике NULL.

Проще говоря - есть вариант реализации, в котором не нужно сохранять ключи, где был NULL.

Stas
09.01.2018
22:09:39
Это достигается первым вариантом - в нём NULL будет возвращаться, если в источнике нет значения или если в источнике NULL.
Не совсем корректно, если нет значения можно default возвращать, который по идее тоже может быть NULL, но не обязательно же. Но главное конечно сам факт возврат нулла, тк сейчас обращение к словарю выглядит как страшная конструкция обвешанная if’ами

Alexey
09.01.2018
22:09:53
Ok.

Ololo
10.01.2018
04:20:12
Фух. Впервые читал документацию в оригинале на русском.

Есть кто использовал clickhouse_sqlalchemy?

Рулон
10.01.2018
05:58:40
Да! все работает )

Ololo
10.01.2018
06:07:04
Ругается на UInt у меня.

Compiler <sqlalchemy_clickhouse.base.ClickHouseTypeCompiler object at 0x000002A07C606128> can't render element of type <class 'clickhouse_sqlalchemy.types.UInt32'>

И ещё там отсутствует тип DateTime в clickhouse_sqlalchemy.types. Это значит, что я могу использовать DateTime из главного модуля?

Впрочем, на все Int'ы ругается так же. И, я так понял, primary_key=True в параметрах колонки использовать нельзя? Просто он сам в этом случае вставляет NOT NULL в запрос на создание таблицы, а такой директивы нет.

Кажется, придётся создание таблицы вручную описывать.

Kostya
10.01.2018
06:21:44
Есть кто использовал clickhouse_sqlalchemy?
Доброе утро. Я автор этой библиотеки. С DateTime есть проблема, да. Использовать родной DateTime sqlalchemy не получится. Создайте, пожалуйста, issue на github. Пример создания таблицы есть на github-странице проекта. Если есть ещё вопросы, то можно в личку.

Ololo
10.01.2018
06:22:55
Спасибо.

Kostya
10.01.2018
06:27:21
Впрочем, на все Int'ы ругается так же. И, я так понял, primary_key=True в параметрах колонки использовать нельзя? Просто он сам в этом случае вставляет NOT NULL в запрос на создание таблицы, а такой директивы нет.
Для диалекта CH у таблицы должны быть перегружены некоторые методы. Это требует использования специфических классов declarative base и table. Вы используете их или родные из sqlalchemy?

Ololo
10.01.2018
06:28:54
Создам issue вечером, если успею.

Kostya
10.01.2018
06:30:48
Спасибо!

Alex
10.01.2018
07:35:53
коллеги, подскажите пожалуйста можно ли попросить кликхаус делать optimize table final на периодической основе? без сторонник скриптов

Google
Alex
10.01.2018
07:38:17
необходимо для collapsing merge tree производить полное схлопывание чтобы не оставалось больше одной партиции, сейчас планируем писать в виде скрипта сбоку, но вдруг есть какая то настройка

Дмитрий
10.01.2018
07:49:28
Крутим throughput в ch-драйвере, и появилось несколько вопросов: 1) Если данные отправлять в нежатом виде, или с алгоритмом, отличным от представленного в конфигах, они всеравно пожмутся при merge-операции в соответствии с указанными compression в настройках сервера? 2) От чего защищает CityHash над сжатым блоком данных?

и в догонку, могут ли отправляемые блоки в пределах одного потока быть сжаты разными методами? Хочется проверить кейс, с отправкой в lz4 по дефолту и переключением на zstd, когда включается throttling по сети.

Virus
10.01.2018
09:04:57
насколько фатально убивать одну реплику в шарде по -9 если подвисла? кликхаус нормально переживает такое или лучше нормально завершать процесс, даже если это очень долго?

Felixoid
10.01.2018
09:43:47
насколько фатально убивать одну реплику в шарде по -9 если подвисла? кликхаус нормально переживает такое или лучше нормально завершать процесс, даже если это очень долго?
По собственному опыту — нормально. Не переживал раньше только вырубание по питанию при активной вставке, так как данные на диск сбрасываться не успевали, а вот в ZK уже были

Virus
10.01.2018
09:45:56
по логам он что-то очень сильно мержит, но при коннекте на порт выдает Resource temporarily unavailable. у нас просто очень много баз и таблиц в каждой, еще не успели переехать на одну широкую.

были ситуации когда реплика не вставала после -9 пока форсом не заставишь востановить данные.

Felixoid
10.01.2018
09:50:49
ну вот это, судя по всему, примерно то же самое

какие-то данные до диска не доезжают

Alex
10.01.2018
10:18:50
Парни, кто то пользовался агрегированными MATERIALIZED VIEW?

Ivan
10.01.2018
10:19:36
Коллеги, есть ли возможноcть как-то удалить данные за вчерашний день из таблицы с движком MergeTree?

Дмитрий
10.01.2018
10:22:24
нет, если партиционирована не по дням. А что мешает просто пересоздать её с POPULATE и нужным фильтром?

простите, думал вы про мат вью.

Удаление пока что боль. Можно налить данные из текущей партиции рядом с нужным фильтром, затем отцепить текущую партицю и перелить данные из соседней таблицы. Не атомарно и требует остановки записи.

Alex
10.01.2018
10:26:28
Мы используем
Подскажите пожалуйста. Создаю представления с сотоянием вида: ... AS SELECT sumState(a) as a, sumState(b) as b, CASE WHEN a > 0 THEN (b / a) ELSE 0 END AS c ... Так вот ругается на стороку с Case вот такой ошибкой DB::Exception: Illegal types of arguments (AggregateFunction(sum, UInt8), UInt8) of function greater. Может там надо a и b доагрегирровать?

papa
10.01.2018
10:28:21
sumState(a) as a

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