Репликация табличек
👫Кратко про стек
clickhouse - это база данных))
airflow - оркестратор)
dbt - тулза для удобной работы с трансформацией данных, контроля их качества, ещё позволяет все DDL делать через селекты
💐Кейс
Недавно у нас данные в кликхаусе переехали на новый кластер с поддержкой репликации. А поверх этих данных крутились пайплайны в airflow и запускались проверочки на dbt. И в один момент все упало😐
Что ж, надо фиксить. Самая большая боль - это как поднять упавшие dbt модельки, которые писали данные в таблички. Например, есть такие, которые каждый день собирают количество строк в данных для мониторинга.
Пошел пул проблем:
🔴откуда берутся таблички с суффиксами dbt_backup, dbt_tmp_tables, dbt_new_data и почему они затирают оригинальные
🔴почему инкрементальные модельки (которые дописывают порцию данных) не могут это делать при повторных запусках
🔴как создавать таблички из csv файликов с движками Replicated
🔴почему вдруг я не могу запускать больше 5 параллельных тасок в даге и как это исправить
🔴нет грантов на операцию sync replica
🔴почему при чтении одной и той же таблицы то 100 строк, то 0
...
Задала вопрос в сообществе dbt в слаке, и там один чел прокомментил, что столкнулся с теми же самыми проблемами. Совпадение? (он из WB)
В общем, это всё удалось решить так:
⭐️в dbt обязательно прописывать в конфигах cluster (спец. штука для реплицированных таблиц)
⭐️для csv файликов тоже в конфигах можно прописать дефолтный движок
⭐️для параллельного запуска тасок есть параметр max_active_tasks
⭐️перепроверить, что в коде с модельками и сами таблички заданы через Replicated
Многие проблемы решились последним пунктом, в том числе с 0 строк. Тут суть в том, что когда создается стандартная табличка (с движком без Replicated), то она находится на одной ноде. Но когда мы запросом туда стучимся, то нас могут отправить на другую ноду, где этих данных нет👍
А вы работали с репликацией, есть запомнившаяся мудрость на будущее?
P.S. все, идите отдыхайте 😶🐱🐱
Post #133
1.42K

- 🔥 11
- ⚡ 6