Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Dataflow BigQuery-ClickHouse Template

BigQuery에서 ClickHouse로 전송하는 Template은 BigQuery 테이블의 데이터를 ClickHouse 테이블로 수집하는 배치 파이프라인입니다. 이 Template은 전체 테이블을 읽거나, 제공된 SQL 쿼리를 사용해 특정 레코드만 필터링할 수 있습니다.

파이프라인 요구 사항

  • 소스 BigQuery 테이블이 존재해야 합니다.
  • 대상 ClickHouse 테이블이 존재해야 합니다.
  • Dataflow 워커 머신이 ClickHouse 호스트에 접근할 수 있어야 합니다.

Template 매개변수



Parameter Name Parameter Description Required Notes
jdbcUrl jdbc:clickhouse://<host>:<port>/<schema> 형식의 ClickHouse JDBC URL입니다. 사용자 이름과 비밀번호는 JDBC 옵션으로 추가하지 마십시오. 그 밖의 JDBC 옵션은 JDBC URL 끝에 추가할 수 있습니다. ClickHouse Cloud 사용자는 jdbcUrlssl=true&sslmode=NONE을 추가하십시오.
clickHouseUsername 인증에 사용할 ClickHouse 사용자 이름입니다.
clickHousePassword 인증에 사용할 ClickHouse 비밀번호입니다.
clickHouseTable 데이터가 삽입될 대상 ClickHouse 테이블입니다.
maxInsertBlockSize 삽입용 블록 생성 방식을 제어하는 경우, 삽입을 위한 최대 블록 크기입니다. (ClickHouseIO 옵션) ClickHouseIO 옵션입니다.
insertDistributedSync 이 설정을 활성화하면 분산 테이블에 대한 INSERT 쿼리는 데이터가 클러스터의 모든 노드로 전송될 때까지 대기합니다. (ClickHouseIO 옵션) ClickHouseIO 옵션입니다.
insertQuorum 복제된 테이블(Replicated Table)의 INSERT 쿼리에서 지정한 수의 레플리카에 대한 쓰기가 완료될 때까지 대기하고, 데이터 추가를 선형화합니다. 0 - 비활성화. ClickHouseIO 옵션입니다. 이 설정은 기본 서버 설정에서 비활성화되어 있습니다.
insertDeduplicate 복제된 테이블(Replicated Table)의 INSERT 쿼리에서 삽입되는 블록에 대해 중복 제거를 수행할지 지정합니다. ClickHouseIO 옵션입니다.
maxRetries 삽입당 최대 재시도 횟수입니다. ClickHouseIO 옵션입니다.
InputTableSpec 읽어올 BigQuery 테이블입니다. inputTableSpec 또는 query 중 하나를 지정하십시오. 둘 다 설정하면 query 매개변수가 우선합니다. 예시: <BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>. BigQuery Storage Read API를 사용해 BigQuery 스토리지에서 직접 데이터를 읽습니다. Storage Read API 제한 사항을 확인하십시오.
outputDeadletterTable 출력 테이블에 기록되지 못한 메시지를 저장하는 BigQuery 테이블입니다. 테이블이 없으면 파이프라인 실행 중에 생성됩니다. 지정하지 않으면 <outputTableSpec>_error_records가 사용됩니다. 예를 들어 <PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>입니다.
query BigQuery에서 데이터를 읽는 데 사용할 SQL 쿼리입니다. BigQuery 데이터셋이 Dataflow 작업과 다른 프로젝트에 있는 경우 SQL 쿼리에서 전체 데이터셋 이름을 지정하십시오. 예: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. useLegacySql이 true가 아니면 기본값은 GoogleSQL입니다. inputTableSpec 또는 query 중 하나를 반드시 지정해야 합니다. 두 매개변수를 모두 설정하면 템플릿은 query 매개변수를 사용합니다. 예시: SELECT * FROM sampledb.sample_table.
useLegacySql 레거시 SQL을 사용하려면 true로 설정합니다. 이 매개변수는 query 매개변수를 사용할 때만 적용됩니다. 기본값은 false입니다.
queryLocation 기본 테이블에 대한 권한 없이 승인된 뷰에서 읽을 때 필요합니다. 예: US.
queryTempDataset 쿼리 결과를 저장할 임시 테이블을 생성할 기존 데이터셋을 설정합니다. 예: temp_dataset.
KMSEncryptionKey 쿼리 소스를 사용해 BigQuery에서 읽는 경우, 생성되는 임시 테이블을 암호화하는 데 이 Cloud KMS 키를 사용합니다. 예: projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key.

소스 및 대상 테이블 스키마

BigQuery 데이터셋을 ClickHouse에 효과적으로 적재하기 위해 파이프라인은 다음 단계로 컬럼 추론 과정을 수행합니다:

  1. Template는 대상 ClickHouse 테이블을 기준으로 스키마 객체를 생성합니다.
  2. Template는 BigQuery 데이터셋을 순회하며 컬럼 이름을 기준으로 일치하는 컬럼을 찾습니다.

데이터 타입 매핑

BigQuery 타입은 ClickHouse 테이블 정의에 따라 변환됩니다. 따라서 위 표에는 대상 ClickHouse 테이블에 권장되는 매핑이 나와 있습니다(해당 BigQuery 테이블/쿼리 기준).

BigQuery Type ClickHouse Type Notes
배열 타입 배열 타입 내부 타입은 이 표에 나열된 지원되는 기본 데이터 타입 중 하나여야 합니다.
불리언 타입 Bool 타입
날짜 타입 Date 타입
Datetime 타입 Datetime 타입 Enum8, Enum16, FixedString에도 사용할 수 있습니다.
String 타입 String 타입 BigQuery에서는 모든 Int 타입(INT, SMALLINT, INTEGER, BIGINT, TINYINT, BYTEINT)이 INT64의 별칭입니다. Template은 정의된 컬럼 타입(Int8, Int16, Int32, Int64)에 따라 컬럼을 변환하므로, ClickHouse에서는 적절한 Integer 크기를 설정하는 것이 좋습니다.
Numeric - Integer 타입 Integer 타입 BigQuery에서는 모든 Int 타입(INT, SMALLINT, INTEGER, BIGINT, TINYINT, BYTEINT)이 INT64의 별칭입니다. Template은 정의된 컬럼 타입(Int8, Int16, Int32, Int64)에 따라 컬럼을 변환하므로, ClickHouse에서는 적절한 Integer 크기를 설정하는 것이 좋습니다. 또한 ClickHouse 테이블에서 UInt8, UInt16, UInt32, UInt64와 같은 부호 없는 Int 타입을 사용하는 경우에도 템플릿이 이를 변환합니다.
Numeric - Float 타입 Float 타입 지원되는 ClickHouse 타입: Float32Float64

Template 실행

BigQuery to ClickHouse Template는 Google Cloud CLI를 통해 실행할 수 있습니다.

Google Cloud Console에 로그인한 다음 DataFlow를 검색합니다.

  1. CREATE JOB FROM TEMPLATE 버튼을 클릭합니다.
    DataFlow 콘솔
  2. Template 양식이 열리면 작업 이름을 입력하고 원하는 리전을 선택합니다.
    DataFlow Template 초기 양식
  3. DataFlow Template 입력란에 ClickHouse 또는 BigQuery를 입력한 다음 BigQuery to ClickHouse Template를 선택합니다.
    BigQuery to ClickHouse Template 선택
  4. Template를 선택하면 양식이 확장되어 다음과 같은 추가 정보를 입력할 수 있습니다.
    • jdbc:clickhouse://host:port/schema 형식의 ClickHouse 서버 JDBC URL
    • ClickHouse 사용자 이름
    • ClickHouse 대상 테이블 이름

BigQuery to ClickHouse 확장 Template 양식
  1. Template Parameters 섹션에 설명된 대로 BigQuery/ClickHouseIO 관련 구성을 필요에 맞게 사용자 지정하여 추가합니다.

작업 모니터링

Google Cloud Console의 Dataflow Jobs 탭으로 이동하여 작업 상태를 모니터링합니다. 진행 상황과 오류를 포함한 작업 세부 정보를 확인할 수 있습니다:

실행 중인 BigQuery-ClickHouse 작업을 보여주는 Dataflow 콘솔

문제 해결

메모리 제한(전체) 초과 오류(코드 241)

이 오류는 ClickHouse가 대량의 데이터 배치를 처리하는 중 메모리가 부족할 때 발생합니다. 이 문제를 해결하려면 다음을 수행하세요.

  • 인스턴스 리소스를 늘리세요: 데이터 처리 부하를 감당할 수 있도록 메모리가 더 많은 상위 인스턴스로 ClickHouse 서버를 업그레이드하십시오.
  • 배치 크기를 줄이세요: Dataflow 작업 구성에서 배치 크기를 조정해 더 작은 데이터 청크를 ClickHouse로 전송하면 배치당 메모리 사용량을 줄일 수 있습니다. 이러한 변경은 데이터 수집 중 리소스 사용량의 균형을 맞추는 데 도움이 됩니다.

Template 소스 코드

Template의 소스 코드는 다음 리포지토리에서 확인할 수 있습니다:

Navigation