feat(airflow): подключён официальный провайдер ClickHouse
- Зачем: - нужен единый штатный путь исполнения SQL и программных запросов ClickHouse из Airflow. - Что: - добавлен официальный провайдер и подключения типа `clickhouse`. - SQL-файлы переданы `SQLExecuteQueryOperator`, а программные запросы — `ClickHouseHook`. - разбор заказов собран в одном файле, DDL разделён по задачам, документация и смоук обновлены. - Проверка: - выполнены `make lint` и `make config-test`. - собран образ, выполнены `pip check`, `make rebuild-storage`, `make smoke` (21/21), `make check-clickhouse` (10/10) и `make check-services` (7/7).
This commit is contained in:
1 parent
587e392220
commit
8d82679bc1
17 files changed
+393
-438
No files matched your search
@@ -51,8 +51,8 @@ Airflow держит прикладные топики Kafka, каноничес
|
||||
([ADR 0007](../adr/0007-clickhouse-access.md)). Ей разрешено администрировать
|
||||
прикладные базы — заводить и удалять их и объекты внутри, — читать их и
|
||||
выполнять кластерный DDL. Ей разрешено чтение `system.settings`: без него
|
||||
`clickhouse-connect` не открывает соединение. Административные запросы к
|
||||
системным базам ей запрещены.
|
||||
драйвер `clickhouse-connect` под официальным провайдером Airflow не открывает
|
||||
соединение. Административные запросы к системным базам ей запрещены.
|
||||
|
||||
`etl` при этом не расширяется. Право удаления баз нужно редкой операции
|
||||
восстановления и остаётся у `lifecycle`. Граница проверяема: при лишнем запросе
|
||||
@@ -69,9 +69,10 @@ Airflow держит прикладные топики Kafka, каноничес
|
||||
Меняющиеся API сверены через Context7 и затем с установленными пакетами
|
||||
стенда. Выбраны публичный REST API v2 и ждущий `TriggerDagRunOperator` Airflow,
|
||||
сборка образа через `DockerHook.get_conn().build()`, futures `AdminClient` для
|
||||
Kafka и по одному `clickhouse-connect.command()` на выражение DDL. Последний
|
||||
выбор требует явного разбора файлов: клиент сам многозапросный файл не делит,
|
||||
а в каноническом SQL конец выражения уже задан точкой с запятой в конце строки.
|
||||
Kafka, `SQLExecuteQueryOperator` для исполняемых SQL-файлов ClickHouse и
|
||||
`ClickHouseHook` для запросов, чей результат обрабатывает Python. Оператор сам
|
||||
шаблонизирует файл и при `split_statements=True` исполняет выражения по порядку;
|
||||
собственный разбор SQL дагу больше не нужен.
|
||||
|
||||
## Контракты дагов
|
||||
|
||||
@@ -90,8 +91,11 @@ Kafka и по одному `clickhouse-connect.command()` на выражени
|
||||
матвью, и топик, созданный брокером сам, приехал бы с одним разделом
|
||||
([ADR 0008](../adr/0008-order-ingestion.md)).
|
||||
3. Применяет канонический DDL из `sql/ddl/` по порядку имён файлов, с ноды 1,
|
||||
учётной записью `lifecycle`. Правило «матвью приёма создаётся последней»
|
||||
остаётся за раскладкой файлов и не переезжает в даг.
|
||||
учётной записью `lifecycle`. Каждый файл — отдельная последовательная
|
||||
задача `SQLExecuteQueryOperator`; выражения внутри неё исполняются по
|
||||
порядку с `split_statements=True`. Красная задача называет файл и не пускает
|
||||
последующие. Правило «матвью приёма создаётся последней» остаётся за
|
||||
раскладкой файлов и не переезжает в даг.
|
||||
4. Собирает канонический образ генератора. Иначе мир мог бы приехать из старого
|
||||
кода: сборкой образа при подъёме больше никто не занимается.
|
||||
5. Играет стартовые дни одним прогоном `batch` того же образа.
|
||||
|
||||
Reference in new issue
Block a user