Databricks Unity Catalog를 BigQuery로 연합하는 방법과 Iceberg REST 카탈로그란
한마디로
Databricks 데이터를 복사 없이 BigQuery에서 바로 읽고 자연어로 물어볼 수 있어요
한눈에
Google Cloud가 Apache Iceberg REST 카탈로그 표준으로 Databricks Unity Catalog, Snowflake Horizon Catalog, AWS Glue Data Catalog를 BigQuery에 연합하는 방법을 소개했어요. 데이터를 중앙 저장소로 복사하는 추출 파이프라인 없이, 흩어진 데이터를 BigQuery에서 조인하고 자연어로 질의하는 구조입니다.
기존 방식의 문제
보통은 원격 데이터셋을 중앙 스테이징 웨어하우스로 복사하는 예약 추출 파이프라인을 돌려요. 원문은 이 방식이 동기화 지연을 만들고, 반복 저장 비용을 늘리고, 네트워크 egress 요금을 변동시킨다고 짚습니다. 업스트림 스키마가 바뀌면 파이프라인이 깨지고, 서로 어긋난 대시보드의 지표를 맞추는 데 시간이 듭니다. 마케팅 리포팅도 같은 문제를 겪는데요. 고객, 상품, 매장 데이터가 서로 다른 플랫폼에 있으면 통합 리포트마다 복제 작업이 따라붙습니다.
연합 구조와 Databricks 설정
Lakehouse runtime catalog가 메타데이터 동기화와 스토리지 접근을 분리합니다. 스키마, 스냅샷 포인터, 테이블 정의는 사용자가 정한 주기로 원격 카탈로그에서 주기적으로 동기화돼요. 쿼리 시점에는 호환 엔진이 Amazon S3 같은 원격 객체 스토리지의 Parquet 파일을 원격 플랫폼이 발급한 임시 자격증명으로 직접 읽습니다. 모든 쿼리 처리는 BigQuery 같은 Google Cloud 컴퓨팅 안에서 일어나고, 원격 Databricks 클러스터는 호출되지 않아요.
Databricks 쪽 준비는 순서가 정해져 있습니다.
- 대상 스키마를 Databricks에 등록된 external location과 연결
- metastore 관리자가 metastore 상세 탭에서 External data access를 활성화
- Databricks Service Principal 생성 후 UUID 기록
- gcloud로 Google Cloud에 연합 카탈로그를 만들고, describe로 자동 생성된 서비스 계정 확인
- Databricks에서 서비스 프린시펄에 EXTERNAL USE SCHEMA 권한을 부여해 credential vending 허용
- 서비스 프린시펄에 federation policy 설정: Issuer URL은 https://accounts.google.com, Subject는 describe 명령이 돌려준 숫자 ID, Audiences는 https://accounts.cloud.databricks.com
쿼리 한 번으로 세 클라우드 조인
연합된 Iceberg 테이블은 project.catalog.namespace.table 4단 경로로 접근합니다. 원문 예시는 BigQuery 네이티브 판매 거래에 Snowflake의 고객, Databricks의 상품, AWS Glue의 매장 테이블을 조인하는 쿼리 하나를 실행해요. Snowflake 식별자는 대문자(CORE.DIM_CUSTOMERS)로, Databricks와 AWS Glue 경로는 소문자로 표기된다는 점을 기억해 두세요. 연합 테이블이 BigQuery 네이티브 테이블처럼 동작하므로, 이 조인을 논리 뷰로 저장해 대화형 분석의 입력으로 씁니다. '매출 상위 고객이 어떤 상품을 샀고 어느 매장에서 샀나' 같은 질문을 자연어로 던지면 SQL 생성, 실행, 응답까지 이어지는 흐름이에요.
운영 전 점검 체크리스트
- 동기화 간격: --refresh-interval 최소값은 300초입니다. 테이블이 수백 개인 큰 카탈로그는 메타데이터 조회가 길어질 수 있고, 한 주기가 밀리면 BigQuery가 다음 예약 실행을 건너뛰어요.
- 데이터 거주: 가져온 크로스클라우드 데이터 블록은 연합 카탈로그가 있는 리전(예: us-central1)에 캐시됩니다. 사내 데이터 거주 정책과 맞는지 확인해야 합니다.
- 암호화: 캐시 블록은 Google 관리형 키를 쓰고, constraints/gcp.restrictNonCmekServices 제약을 적용하면 캐시를 우회해 매 쿼리마다 원격 스토리지를 직접 읽습니다.
- 모니터링: BigQuery job 통계의 objectStorageStats에서 cacheBytesRead와 objectStorageBytesRead를 비교하면 캐시 활용도를 볼 수 있어요.
자주 묻는 질문
Apache Iceberg 란 무엇인가요?
원문에서 Apache Iceberg는 테이블 형식이며, 그 REST 카탈로그 사양이 연합의 공통 연결 규격이에요. Databricks Unity Catalog, Snowflake Horizon Catalog, AWS Glue Data Catalog가 이 사양을 지원해서 세 플랫폼에 같은 연결 패턴을 적용할 수 있습니다.
BigQuery 란 무엇이고 Databricks 데이터를 어떻게 읽나요?
BigQuery는 Google Cloud의 분석 엔진입니다. Databricks 데이터는 Unity Catalog 연합으로 읽는데, 메타데이터만 주기적으로 동기화하고 실제 Parquet 파일은 원격 스토리지에서 임시 자격증명으로 직접 읽어요. 데이터 복사는 일어나지 않습니다.
쿼리할 때 Databricks 컴퓨팅 비용이 드나요?
원문 기준으로 쿼리 처리는 전부 Google Cloud 컴퓨팅에서 실행되고 원격 Databricks 클러스터나 Snowflake 웨어하우스는 호출되지 않아요. 비용 수치는 원문에 없으니, 요금은 공식 문서로 확인하셔야 합니다.
마케팅 데이터 분석에 어떻게 쓰나요?
플랫폼별로 흩어진 고객, 상품, 매장 데이터를 복제 없이 BigQuery에서 조인하고, 저장한 뷰를 대화형 분석에서 자연어로 탐색하는 방식입니다. 통합 리포팅 구조를 단순화하는 용도로 쓸 수 있어요.
에디터 노트
복제 파이프라인을 없애면 동기화 지연과 스키마 변경 대응 부담이 줄어서, 멀티클라우드 마케팅 리포팅을 설계할 때 검토할 만한 선택지가 하나 늘어납니다. 다만 최소 300초 동기화 간격 때문에 실시간 지표에는 맞지 않고, 캐시 리전과 CMEK 정책이 사내 규정과 충돌하지 않는지 도입 전에 확인해야 합니다.
참고 출처 | 원문 보기
태그
- Databricks
- 데이터브릭스
- BigQuery
- 빅쿼리
- Apache Iceberg
- 아파치 아이스버그
- Unity Catalog
- 유니티 카탈로그
이 기사를 근거로 쓴 FactStack 분석
관련 마테크
- BigQuery란 무엇인가, Google Cloud Lakehouse 카탈로그와 Databricks Unity 연동 사례로 보는 멀티엔진 전략Google Cloud가 Spanner 기반 Iceberg 카탈로그를 정식 출시하면서 Databricks Unity와도 양방향 연동이 가능해졌어요
- BigQuery 경계 없는 Lakehouse란, Databricks, Snowflake 데이터 AI 에이전트 연결법BigQuery가 Databricks, Snowflake, AWS 데이터를 옮기지 않고도 AI 에이전트로 직접 쿼리하게 해줘요
- BigQuery란, cross-cloud caching으로 멀티클라우드 쿼리 비용 줄이는 법AWS, Azure에 있는 데이터를 옮기지 않고도 BigQuery가 자주 쓰는 부분만 캐싱해서 빠르고 싸게 조회해줘요
- Databricks OpenSharing이란, Qumulo NeuralSearch 연동으로 분산 데이터 통합 거버넌스 구현하는 법여러 곳에 흩어진 데이터를 옮기지 않고도 한 곳에서 찾고 분석할 수 있게 해주는 연동이에요