Обсуждаем ClickHouse
Привет.
Может будут идеи по моей проблеме.
Есть таблица с движком ReplacingMergeTree, в ней 500млн строк и под сотню полей, версионное поле - дата.
Данные в нее идут из двух топиков Kafka через матвьюхи.
Из первого топика инсерты, с ними проблем нет.
Из второго требуется делать апсерты: обновить пришедшие поля, сохранить текущие.
Я сделал апсерты в матвью с джойном на целевую таблицу, т.е. на каждое сообщение идет джойн по ключу одной строки из большой таблицы.
Проблема в том что таблица на 500млн с правой стороны джойна и клик пытается создать в памяти хеш для джойна.
Вытащить строку в WITH не получится, зависимые подзапросы не работают.
SETTINGS join_algorithm = 'full_sorting_merge' на матвью тоже не помог, клик все равно пытается создать хеш в памяти на 500 млн строк.
>всем привет. а какие варианты нотификации в КХ есть?
нету, никаких.
>Engine=URL() и Engine=Kafka()
неприменимо в реальной жизни, работает только в тестовых примерах helloworld
у меня рядом есть таблица куда я точно так же копирую и там партиция 20гб и шард ключ рандомный - и здесь у меня нет проблем, только с этим кейсом
после того как я сменил шард ключ на хеш - стало лучше, но не окончательно
То есть вы делаете inset into select * from table limit 100 и у вас 102 строки встает ?
Читать полностью…на источнике есть дубли если мы говорим о уникальности строк, я про проблему что если на источнике 100 строк, то я ожидаю скопировать тоже 100, а получается 102
Читать полностью…Нужно понимать, в источнике точно нету дублей ?
Читать полностью…@den_crane @Artemm_1989 понял, большое спасибо
Читать полностью…macro substitutionЧитать полностью…
replica 01
replica 01
replica 01
replica 01
replica 01
replica 01
replica 01
replica 01
select * from clusterAllReplicas('cluster', system.macros) where macro = 'replica'
При таком создании
CREATE TABLE test.table ON CLUSTER cluster
(
field1 String,
field2 Int32
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/replicated/{uuid}', '{replica}')
ORDER BY (
field1 ,
field2
)
SETTINGS index_granularity = 8192;
SQL Error [22000]: Code: 253. DB::Exception: There was an error on: Code: 253. DB::Exception: Replica /clickhouse/tables/replicated/ererr-e312-42ca-a0ba-c5fffw/replicas/01 already exists.
(REPLICA_ALREADY_EXISTS) (version 24.10.3.1 & D-02.001.00-01). (REPLICA_ALREADY_EXISTS) (version 24.10.3.1 & D-02.001.00-01)
а если через MV в target table c Engine=URL?
Читать полностью…Потеряно несколько партов данных на диске S3 в AliCloud. Мутации апдейт данных падают с ошибкой ниже.
Явная несовместимость КХ с аликлаудом. Есть список не рекомендованных s3 движков?
Как восстановить данные? Много партов в detached/broken
Code: 499. DB::Exception: The specified key does not exist.: while reading key: clickhouse3/sgf/zyshclfirpinnjvvnpqdewkdovvzu, from bucket: my-bucket: Cache info: Buffer path: clickhouse3/sgf/zyshclfirpinnjvvnpqdewkdovvzu, hash key: e9c56fb57399082aabebb180c39cc91c, file_offset_of_buffer_end: 224395264, read_until_position: 228891447, internal buffer end: 224395264, read_type: REMOTE_FS_READ_AND_PUT_IN_CACHE, last caller: 9e8c0da4-1fa6-405c-b577-a07c4ca7c9d2::202410_0_185_3_270:2101396, file segment info: File segment: [224395264, 226492415], key: e9c56fb57399082aabebb180c39cc91c, state: DOWNLOADING, downloaded size: 0, reserved size: 0, downloader id: 9e8c0da4-1fa6-405c-b577-a07c4ca7c9d2::202410_0_185_3_270:2101396, current write offset: 224395264, caller id: 9e8c0da4-1fa6-405c-b577-a07c4ca7c9d2::202410_0_185_3_270:2101396, kind: Regular, unbound: 0: (while reading column platform_time): (while reading from part /var/lib/clickhouse/disks/s3_disk/store/9e8/9e8c0da4-1fa6-405c-b577-a07c4ca7c9d2/202410_0_185_3/ in table my_db.my_table (9e8c0da4-1fa6-405c-b577-a07c4ca7c9d2) located on disk s3_cache_encrypted of type s3, from mark 7545 with max_rows_to_read = 65409): While executing MergeTreeThread. (S3_ERROR) (version 23.8.8.20 (official build))Читать полностью…
`ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}/{uuid}', '{replica}')
PARTITION BY data_chunk_date
ORDER BY (country_id, client, action, component, screen, section, server_timestamp, timestamp, cityHash64(user_hash))
SAMPLE BY cityHash64(user_hash)
TTL
data_chunk_date TO VOLUME 'fast',
data_chunk_date + INTERVAL 3 MONTH TO VOLUME 'default'
SETTINGS
storage_policy = 'tiered_storage',
index_granularity = 8192,
replicated_deduplication_window = 1000;
параллельно? во время тестов не было вставок
Читать полностью…постоянно практически, если я из 200 млн строк отбираюб массив данных в 20 млн строк и копирую или даже 100 млн - дублей нет, а вот при 200 - всегда больше строк
Читать полностью…select name,value from system.settings where changed
Читать полностью…Если нету дублей в источнике, то это очень странно.
Покажите описание таблиц после колонок.
нужна помощь зала, при копировании/вставке данных из одной партиции одной таблицы в другую distributed таблицу чаще всего получаю дубли строк, подскажите куда копать, перепробовал уже разные варианты
шардинг ключ хеш по одному из полей, партиция 50-60 гб. 200млн строк, replicated_deduplication_window = 1000 стоит
запись в локальные таблицы не предлагать)
версия 25.3
нужен макрос, который будет разным на всех этих машинах типа 01 02 03 04 05 06 07 08. Можете этот поправить, можете новый макрос завести.
Читать полностью…аа, я понял, у вас реплики неправильно называются - 01
replica должна быть уникальная на весь кластер, обычно люди используют hostname
А у вас реплики в каждом шарде одинаково называются ? 01 ?
Читать полностью…Да, ошибка та же. У себя в примере выше сначала сослался на старую таблицу в пути. Потом поправил на новую и ошибка такая же, как у Игоря
Читать полностью…Да, тестовый cH для поделок давно делали)
Сейчас другой пример скинем