Skip to main content
이 문서는 데이터 엔지니어링 섹션의 일부입니다.

왜 수집 방법 선택이 중요한가요?

데이터 파이프라인을 구축할 때 가장 먼저 마주치는 질문은 “어떤 방법으로 데이터를 가져올 것인가?” 입니다. 잘못된 수집 방법을 선택하면 다음과 같은 문제가 발생할 수 있습니다:
  • 과도한 비용: 불필요하게 복잡한 도구를 사용하여 인프라 비용이 증가합니다
  • 높은 지연시간: 실시간이 필요한 곳에 배치 방식을 적용하면 비즈니스 의사결정이 늦어집니다
  • 운영 부담: 커스텀 코드로 직접 구현하면 유지보수에 많은 시간이 소요됩니다
  • 데이터 품질 문제: 스키마 변경이나 중복 처리를 고려하지 않으면 데이터 신뢰성이 떨어집니다
💡 핵심 원칙: Databricks가 제공하는 관리형 서비스를 최대한 활용 하는 것이 비용과 운영 부담을 줄이는 가장 효과적인 방법입니다. 직접 코드를 작성하는 것은 관리형 서비스가 지원하지 않는 경우에만 선택해야 합니다.

Databricks의 데이터 수집 방법 5가지

Databricks에서 데이터를 수집하는 주요 방법은 다음과 같습니다:

각 수집 방법 상세 비교

Auto Loader

Auto Loader는 클라우드 스토리지(S3, ADLS, GCS)에 새로 도착하는 파일을 자동으로 감지하고 증분 수집 하는 Databricks의 핵심 수집 도구입니다. 특징:
  • 파일 알림(Notification) 또는 디렉토리 리스팅(Directory Listing) 방식으로 새 파일 감지
  • 스키마 추론 및 스키마 진화(Schema Evolution) 자동 처리
  • Exactly-once 처리 보장 (체크포인트 기반)
  • CSV, JSON, Parquet, Avro, ORC, XML, 텍스트 등 다양한 포맷 지원
적합한 경우:
  • 클라우드 스토리지에 파일이 지속적으로 도착하는 경우
  • IoT 센서 데이터, 로그 파일, 이벤트 데이터 수집
  • 스트리밍과 배치 모두 지원이 필요한 경우

Lakeflow Connect

Lakeflow Connect는 외부 데이터베이스와 SaaS 애플리케이션에서 코드 없이 관리형 커넥터로 데이터를 수집 하는 서비스입니다. 특징:
  • 초기 스냅샷 + CDC(Change Data Capture) 증분 수집 자동화
  • 스키마 진화 자동 처리
  • Unity Catalog Connection 기반 보안 연결
  • 서버리스 컴퓨트로 실행 (인프라 관리 불필요)
적합한 경우:
  • 운영 데이터베이스(MySQL, PostgreSQL, Oracle 등)에서 CDC 수집
  • SaaS 애플리케이션(Salesforce, Workday, HubSpot 등) 데이터 동기화
  • 코드 작성 없이 빠르게 수집 파이프라인을 구성해야 하는 경우

SDP (Spark Declarative Pipelines)

SDP는 “무엇을 만들지”만 선언하면 실행 계획을 자동으로 관리 하는 선언적 파이프라인 프레임워크입니다. 수집과 변환을 하나의 파이프라인에서 처리할 수 있습니다. 특징:
  • Auto Loader와 통합하여 수집부터 변환까지 하나의 파이프라인으로 구성
  • Expectations(데이터 품질 규칙) 내장
  • 자동 의존성 관리 및 증분 처리
  • Streaming Table, Materialized View 등 다양한 출력 형태
적합한 경우:
  • 수집과 변환을 하나의 선언적 파이프라인으로 관리하고 싶은 경우
  • 데이터 품질 규칙을 파이프라인에 내장하고 싶은 경우
  • Medallion 아키텍처(Bronze → Silver → Gold)를 체계적으로 구현하는 경우

Lakeflow Jobs

Lakeflow Jobs는 Databricks의 워크플로 오케스트레이션 도구 입니다. 다양한 태스크를 조합하여 복잡한 수집 워크플로를 구성할 수 있습니다. 특징:
  • Python, SQL, Notebook, JAR 등 다양한 태스크 타입 지원
  • 스케줄(크론), 파일 도착 트리거, 연속 실행 등 유연한 트리거
  • 태스크 간 의존성 관리 (DAG 구성)
  • 재시도, 알림, 조건부 실행 등 운영 기능
적합한 경우:
  • REST API에서 데이터를 주기적으로 호출해야 하는 경우
  • 여러 수집 작업을 순서대로 또는 병렬로 조합해야 하는 경우
  • 수집 후 검증, 알림 등 복잡한 후처리가 필요한 경우

COPY INTO

COPY INTO는 클라우드 스토리지의 파일을 Delta 테이블에 일회성 또는 간헐적으로 적재 하는 SQL 명령입니다. 특징:
  • 단순한 SQL 문법으로 즉시 실행 가능
  • 멱등성(idempotent) 보장 (같은 파일을 중복 적재하지 않음)
  • 스트리밍이 아닌 배치 방식으로 동작
  • 스키마 진화 지원이 제한적
적합한 경우:
  • 일회성 데이터 마이그레이션 또는 초기 적재
  • 파일이 간헐적으로(하루 1-2회) 도착하고, 실시간 처리가 필요 없는 경우
  • 빠르게 프로토타이핑하거나 테스트할 때

의사결정 트리

어떤 수집 방법을 선택해야 할지 아래 플로차트를 따라가 보시기 바랍니다.

데이터 소스 유형별 추천

파일 기반 소스

데이터베이스 소스

SaaS 소스

스트리밍 소스


배치 vs 스트리밍 관점에서의 선택

💡 Trigger AvailableNow 패턴: Auto Loader를 trigger(availableNow=True)로 실행하면 스트리밍의 장점(증분 처리, 체크포인트)을 유지하면서 배치처럼 실행할 수 있습니다. 비용 효율적이면서도 안정적인 증분 수집이 가능하여 가장 많이 권장되는 패턴입니다.

비용 / 복잡도 / 지연시간 종합 비교


실제 시나리오별 추천 구성

시나리오 1: 이커머스 데이터 파이프라인

운영 MySQL DB(주문, 고객, 상품) + S3 클릭스트림 로그 + Salesforce CRM

시나리오 2: IoT 센서 데이터 수집

수만 대 센서 → Kafka → Databricks → 실시간 대시보드

시나리오 3: 일일 배치 리포트 수집

ERP 시스템에서 매일 CSV 파일을 S3에 업로드

COPY INTO에서 Auto Loader로 마이그레이션

기존에 COPY INTO를 사용하고 있다면, 데이터 볼륨이 증가함에 따라 Auto Loader로 마이그레이션하는 것을 권장합니다.

왜 마이그레이션해야 하나요?

마이그레이션 예시

기존 COPY INTO 코드:
Auto Loader로 변환:
⚠️ 마이그레이션 주의사항: Auto Loader로 전환할 때 기존에 COPY INTO로 이미 적재한 파일이 중복 수집되지 않도록, 초기 체크포인트 설정에 주의해야 합니다. 새 경로에서 시작하거나, cloudFiles.backfillInterval 옵션을 활용하여 기존 파일을 처리할 수 있습니다.

정리

  • 관리형 커넥터가 있으면 Lakeflow Connect를 우선 사용 합니다 (가장 적은 코드, 가장 낮은 운영 부담)
  • 클라우드 스토리지 파일은 Auto Loader 가 최선의 선택입니다 (COPY INTO보다 확장성과 안정성이 우수)
  • 스트리밍 소스(Kafka/Kinesis)는 Structured Streaming 을 SDP 파이프라인 내에서 사용합니다
  • 커넥터가 없는 소스는 Lakeflow Jobs + 커스텀 코드 로 처리합니다
  • 수집과 변환을 통합하려면 SDP 파이프라인 을 활용합니다
  • COPY INTO는 일회성 적재에만 사용 하고, 반복적인 수집에는 Auto Loader를 선택합니다

참고 링크