Skip to main content

목적과 학습 목표

이 실습은 Auto Loader (자동 로더) 전체 시리즈의 첫 번째 단계입니다. 클라우드 스토리지에 도착하는 파일을 자동으로 감지하고 증분 수집 하는 Auto Loader의 핵심 메커니즘을 직접 체험합니다.

학습 목표

Auto Loader의 핵심 가치: 일반 spark.read는 매번 모든 파일을 다시 읽습니다. Auto Loader는 체크포인트에 처리 상태를 기록하여 새로 도착한 파일만 처리 합니다. 파일이 수십억 개로 늘어나도 성능이 일정하게 유지됩니다.

사전 준비

필요 환경

주의 사항

  • 실습 전 클러스터가 Unity Catalog 모드 로 실행되어야 합니다 (Access Mode: Single User 또는 Shared).
  • DBFS (/dbfs/) 대신 UC Volume (/Volumes/) 경로를 사용합니다. 이것이 현재 Databricks 권장 방식입니다.
  • availableNow=True Trigger (트리거) 를 사용하므로 스트림은 처리 완료 후 자동 종료됩니다.

1단계: 카탈로그 및 스키마 생성

예상 결과: auto_loader_lab 스키마가 목록에 나타납니다.

2단계: Volume 생성

Volume (볼륨) 은 Unity Catalog가 관리하는 파일 스토리지 경로입니다. Auto Loader의 소스 파일과 체크포인트를 모두 Volume에 저장합니다.
DBFS vs UC Volume: DBFS (/dbfs/user/hive/...) 는 레거시 경로입니다. 신규 워크로드는 반드시 UC Volume 을 사용하세요. Unity Catalog의 접근 제어(ACL), 감사 로그, 데이터 리니지가 Volume을 통해 작동합니다.

3단계: 샘플 데이터 생성

예상 출력:

실습 1: CSV 파일 스트리밍 수집

Step 1: Auto Loader로 CSV 읽기

Auto Loader는 Spark Structured Streaming (구조적 스트리밍) 의 cloudFiles 소스 포맷으로 구현되어 있습니다.
예상 출력 (스키마):
inferColumnTypes=true 효과: 이 옵션이 없으면 모든 컬럼이 STRING 타입으로 수집됩니다. true로 설정하면 amountdouble, order_datedate로 자동 추론됩니다. 단, 처음 수집 시 일부 파일을 샘플링하여 추론하므로 핵심 컬럼은 schemaHints로 명시적으로 지정하는 것을 권장합니다.

Step 2: Bronze 테이블에 저장

trigger 옵션 비교:

Step 3: 결과 확인

예상 결과:
_rescued_data 모니터링: rescued_rows가 0이면 모든 데이터가 정상적으로 파싱되었습니다. 0보다 크면 해당 행을 조회하여 원인을 파악해야 합니다: SELECT _rescued_data FROM bronze_orders WHERE _rescued_data IS NOT NULL LIMIT 5

Step 4: 새 파일 추가 및 증분 처리 확인

Auto Loader의 핵심인 증분 처리 를 직접 확인합니다.

심화 학습

변형 시나리오 1: 잘못된 형식의 행 처리

실제 환경에서는 일부 행이 스키마에 맞지 않을 수 있습니다.

변형 시나리오 2: Schema Hint (스키마 힌트) 로 타입 강제 지정

Auto Loader가 amountSTRING으로 잘못 추론하는 경우 힌트로 교정합니다.

변형 시나리오 3: 특정 파일 패턴만 수집

성능 튜닝 포인트


정리

핵심 요약

다음 단계


참고 링크