apache-airflow-providers-clickhousedb 프로바이더는 Airflow를 ClickHouse에 연결하여 DAG의 일부로 쿼리를 실행하고, 테이블을 생성하고, 데이터를 적재할 수 있게 합니다. 이 프로바이더는 clickhouse-connect 클라이언트를 사용해 HTTP 인터페이스를 통해 연결되며, Airflow의 공통 SQL 프레임워크에서 ClickHouse를 사용할 수 있도록 제공합니다. 따라서 표준 SQLExecuteQueryOperator로 DDL, DML 및 분석 쿼리를 처리할 수 있으므로 ClickHouse 전용 연산자는 필요하지 않습니다.
프로바이더 설치
apache-airflow-providers-common-sql 및 clickhouse-connect에 의존하며, 함께 설치됩니다. 쿼리 결과를 pandas 또는 polars DataFrame으로 전달하려면 선택적 추가 기능(extras)을 설치하세요:
ClickHouse 연결 생성
clickhouse 연결 유형을 등록합니다. Airflow UI의 Admin > Connections에서 연결을 생성하거나, CLI 또는 환경 변수를 통해 정의할 수 있습니다.
UI에서 연결 유형으로 ClickHouse를 선택하고 다음 필드를 입력하십시오:
ClickHouse Cloud 또는 TLS가 활성화된 자체 호스팅 클러스터를 사용하는 경우 Extra 필드에서
secure를 true로 설정하고 TLS 포트(8443)를 사용하십시오.
추가 연결 옵션
extra JSON 객체의 키로 지정하십시오. 모두 선택 사항입니다:
UI 없이 연결 정의하기
clickhouse_default를 사용합니다.
SQLExecuteQueryOperator로 쿼리 실행
conn_id를 ClickHouse 연결로 설정합니다. 다음 DAG는 테이블(table)을 생성하고, 행을 삽입한 뒤 다시 읽고, 마지막으로 테이블을 삭제합니다:
handler(fetch_all_handler)를 사용해 가져옵니다. 전체 결과 집합이 아닌 다른 값을 반환하려면 다른 handler를 전달하십시오. 예를 들어 첫 번째 행만 반환하려면 fetch_one_handler를 사용합니다.
작업별로 서로 다른 데이터베이스 지정하기
hook_params를 통해 데이터베이스를 재정의하십시오:
후크 직접 사용하기
ClickHouseHook을 사용하십시오.
후크의 bulk_insert_rows 메서드는 clickhouse-connect의 네이티브 열 지향 삽입 경로를 사용하므로, 대규모 데이터셋에서는 행별 삽입보다 훨씬 빠릅니다. 매우 큰 입력에서 최대 메모리 사용량을 제한하려면 batch_size를 설정하세요:
clickhouse-connect 클라이언트용 get_client()를 호출하세요:
세션 설정 적용
hook_params를 통해 전달하십시오. 생성자에 전달된 설정은 연결의 Extra 필드에 정의된 session_settings에 추가로 머지되며, 동일한 키가 충돌할 경우 생성자 값이 우선합니다: