Функция получает параметры Airflow Connection и создаёт клиент ClickHouse native protocol. Её нужно вызывать во время выполнения задачи, а не при импорте DAG.
import clickhouse_driver
Функция получает параметры Airflow Connection и создаёт клиент ClickHouse native protocol. Её нужно вызывать во время выполнения задачи, а не при импорте DAG.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
import clickhouse_driver from airflow.hooks.base import *
def get_clickhouse_client(): conn = BaseHook.get_connection("clickhouse_default") return clickhouse_driver.Client( host=conn.host, port=conn.port, user=conn.login, password=conn.password, database=conn.schema )
Ответ
Функция получает параметры Airflow Connection и создаёт клиент ClickHouse native protocol. Её нужно вызывать во время выполнения задачи, а не при импорте DAG.
Замените wildcard-import явным BaseHook с учётом версии Airflow. Проверьте корректный native-порт, базу, таймауты и настройки TLS из согласованного конфига; HTTP-порт не взаимозаменяем с native.
Пароль не следует логировать. После работы освобождайте соединение подходящим методом клиента, а повторные записи делайте идемпотентными. Создание объекта клиента не подтверждает успешную загрузку данных.
Источник: clickhouse-driver.readthedocs.io.