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.
Instala el proveedor
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
clickhouse. 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
extra. Todas son opcionales:
Definir una conexión sin la UI
clickhouse_default, a menos que especifiques otro.
Ejecuta consultas con SQLExecuteQueryOperator
conn_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
hook_params en lugar de crear una conexión independiente:
Usar el hook directamente
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
hook_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: