apache-airflow-providers-clickhousedb conecta Airflow con ClickHouse, lo que le permite ejecutar consultas, crear tablas y cargar datos como parte de un DAG. Se conecta a través de la interfaz HTTP mediante el Client clickhouse-connect, y expone ClickHouse a través del marco SQL común de Airflow, por lo que el SQLExecuteQueryOperator estándar gestiona consultas DDL, DML y analíticas sin necesidad de un operador específico de ClickHouse.
¿Ya utiliza el
airflow-clickhouse-plugin de la comunidad? Usa un driver, un protocolo y un puerto diferentes. Siga la
guía de migración para trasladar los DAG y las conexiones existentes al proveedor.Instala el proveedor
Instala el proveedor en el entorno donde se ejecutan el scheduler y los workers de Airflow:apache-airflow-providers-common-sql y clickhouse-connect, que se instalan junto con él. Para pasar los resultados de la consulta a DataFrames de pandas o polars, instala los extras opcionales:
Crear una conexión de ClickHouse
El proveedor registra un tipo de conexiónclickhouse. Cree una conexión desde la UI de Airflow en Admin > Connections o defínala mediante la CLI o una variable de entorno.
En la UI, seleccione ClickHouse como tipo de conexión y complete los siguientes campos:
Para ClickHouse Cloud o cualquier clúster autohospedado con TLS habilitado, establezca
secure en true en el campo Extra y use el puerto TLS (8443).
Opciones adicionales de conexión
El proveedor expone opciones adicionales como campos específicos en el formulario de conexión. Si, en cambio, defines la conexión mediante URI, JSON o una variable de entorno, debes proporcionarlas como claves en el objeto JSONextra. Todas son opcionales:
Definir una conexión sin la UI
Configure la conexión mediante una variable de entorno. El formato URI incluye el host, las credenciales y la base de datos:clickhouse_default, a menos que especifiques otro.
Ejecuta consultas con SQLExecuteQueryOperator
Configura elconn_id del operador para que use tu conexión de ClickHouse. El siguiente DAG crea una tabla, inserta filas, las lee de nuevo y elimina la tabla:
handler predeterminado (fetch_all_handler). Para devolver algo distinto del conjunto completo de resultados, pase un handler diferente, como fetch_one_handler para devolver solo la primera fila.
Use una base de datos diferente para cada tarea
Cuando una conexión apunta a un clúster y las tareas individuales consultan distintas bases de datos, sobrescriba la base de datos mediantehook_params en lugar de crear una conexión independiente:
Usar el hook directamente
Para tareas que no encajan en un operador SQL —bulk inserts, streaming o llamadas del client específicas de ClickHouse — use ClickHouseHook dentro de una tarea de Python.
El método bulk_insert_rows del hook usa la ruta de inserción columnar nativa de clickhouse-connect, que es mucho más rápida que las inserciones fila por fila para grandes volúmenes de datos. Establezca batch_size para limitar el uso máximo de memoria con entradas muy grandes:
get_client() para acceder al client subyacente de clickhouse-connect para cualquier función que el hook no exponga directamente:
Aplicar la configuración de sesión
Pasa la configuración de sesión al crear el hook, ya sea directamente o mediante elhook_params del operador. La configuración que se pasa al constructor se superpone a cualquier session_settings definido en el campo Extra de la conexión, y los valores del constructor prevalecen cuando hay conflicto entre claves: