Обсуждаем ClickHouse
вообще удобнее конфигурировать через /etc/clickhouse-server/config.d и /etc/clickhouse-server/users.d
так сразу видно какие изменения базового конфига делаются
<storage_configuration>
<disks>
<backups>
<type>local</type>
<path>/backups/</path>
</backups>
</disks>
</storage_configuration>
<backups>
<allowed_disk>backups</allowed_disk>
<allowed_path>/backups/</allowed_path>
<!-- If the BACKUP command fails and this setting is true then the files
copied before the failure will be removed automatically.
-->
<remove_backup_files_after_failure>true</remove_backup_files_after_failure>
</backups>
Даты вовсе нет, по дате партицирование только
Читать полностью…ошибку прочитали? что именно в ней вам непонятно?
Читать полностью…Делить не с помощью sample, если у вас есть дата в ключе, то можно читать по дням, или неделям
Читать полностью…RESTORE DATABASE swedish FROM Disk('backups', 'swedish_backapp.zip')
RESTORE DATABASE swedish FROM Disk('backups', 'swedish_backapp.zip')
Query id: 7941604c-24ef-45ac-be5a-8f2233da8fd4
Elapsed: 0.073 sec.
Received exception:
Code: 318. DB::Exception: The 'backups.allowed_disk' configuration parameter is not set, cannot use 'Disk' backup engine. (INVALID_CONFIG_PARAMETER)
Можно увеличивать сэмплирование, но это приводит к большому количеству паразитных чтений. Конкретно в моем случае при sample 1/1500 на 15.5 млн прочитанных строк возвращается 12.7 млн строк (82% от прочитанных строк). Если делить еще меньше, например sample 1/1500, то возвращается уже 70% от кол-ва прочитанных строк
Читать полностью…А, либу указать забыл. Использую clickhouse_connect, это ж официальная библиотека?
Читать полностью…Да, дата есть. Партицирование по год + месяц
Читать полностью…есть какое то поле по которому можно на ranges точно поделить? типа даты?
желательно чтобы в PK
Здравствуйте!
Я прочитал об ограничении на условие в on выражении Join-ов, что там должно быть обязательно equal condition что бы корректно отрабатывал hashMerge. Однако, почему-то inner join по условию вхождения в массив с правой стороны работает:
with alias1 as (select map('alias1_id', CAST(id, 'Dynamic'),
'alias1_name', name,
'alias1_state', state,
'alias1_attrs', attrs.meaning_attribute[]) as alias1_attrs,
attrs.join_attribute[].resourceId as alias1_alias2_join
from resources final
where <condition>,
alias2 as (select map('alias2_id', CAST(id, 'Dynamic'),
'alias2_name', name,
'alias2_state', state,
'alias2_attrs', attrs_string) as alias2_attrs,
id as alias2_id
from resources final
where id in (select arrayJoin(alias1_alias2_join)
from alias1))
select alias1_attrs,
alias2_attrs
from alias1
inner join alias2
on has(alias1.alias1_alias2_join, alias2.alias2_id)
ClickHouse exception, message: Code: 403. DB:Exception Cannot determine join keys in JOIN ON expression [Predcates: () Residual filter: ((has(__table1.alias1_alias2_join, __table3.alias2_id)))]. (INVALID_JOIN_ON_EXPRESSION) (version 25.2.2.39 (official build))
arrayJoin(alias1.alias1_alias2_join) = alias2.alias2_id
работает, но порождает много дублирующих строк, если массив более 1 элемента, которые потом нужно убирать группировкой, или юником, что не хочется.
Читать полностью…
если у вас в bare metal памяти 256 Gb RAM и 40Tb и сеть 40Gbit между нодами, то да... будет работать...
если параметры по скромнее... то 40Tb на 10Gbit синкнуть это 9-10 часов минимум... а то и все 12...
ну... мы делаем шарды потому что не влезают уже диски в сервер, тупо упираемся в верхнюю планку по терабайтам на сервер. Они у нас по 40-50тб
Читать полностью…внутри тега <clickhouse> ?
расшарьте на pastila.nl
cat /var/lib/clickhouse/preprocessed_configs/config.xml
где именно сконфигурировали ?
в какой файл внесли изменения?
А, ну тогда как Slach советовал, по полю из ключа. Библиотека тоже вариант, но стоит ли на это завязываться не уверен.
Читать полностью…А дата в ключе не на 1-м месте, где далеко?
Читать полностью…Да, рассматривали и такой вариант, но в этом случае получается слишком много избыточных чтений. По факту партиция читается целиком (те месяц), а данные извлекаются за какой-то сильно меньший период. Как будто вариант деления на "куски" с помощью sample самый оптимальный, если смотреть на соотношение прочитано строк/возвращено строк
Читать полностью…https://clickhouse.com/docs/operations/backup#configure-a-backup-destination
Читать полностью…Справедливо. Попробую через requests/niquests сделать. Спасибо за наводку
Читать полностью…и? думаете ее кто нибудь тестировал на 20 ярдах записей?
Читать полностью…из-за того что стриминг...
https://requests.readthedocs.io/en/latest/user/advanced/#streaming-requests
а ваша либа которой пользуетесь ...видимо в стриминг не очень...
еще такая есть для любителей экзотики
https://github.com/jawah/niquests
Из-за чего чтение через requests в TSV формате будет потреблять меньше памяти на самом сервере?
Читать полностью…20 миллиардов строк это в одной партиции)
Читать полностью…но как я уже говорил, нет синков у клика всей бд, вообще нет. (по опыту)
Читать полностью…потому по опыту наоброт, делать ноды менее 40тб - плохое решение.
Читать полностью…да, поэтому те, кто под относительно небольшие объемы делает шарды, не редко проигрывают ))
Даталенс изначально под жирные сервера и сам отлично умеет параллелить
для девопсов удобнее, для датаинжей - неудобнее.
Читать полностью…