목적과 학습 목표
이 실습은 Auto Loader (자동 로더) 전체 시리즈의 첫 번째 단계입니다. 클라우드 스토리지에 도착하는 파일을 자동으로 감지하고 증분 수집 하는 Auto Loader의 핵심 메커니즘을 직접 체험합니다.학습 목표
Auto Loader의 핵심 가치: 일반 spark.read는 매번 모든 파일을 다시 읽습니다. Auto Loader는 체크포인트에 처리 상태를 기록하여 새로 도착한 파일만 처리 합니다. 파일이 수십억 개로 늘어나도 성능이 일정하게 유지됩니다.
사전 준비
필요 환경
주의 사항
- 실습 전 클러스터가 Unity Catalog 모드 로 실행되어야 합니다 (Access Mode: Single User 또는 Shared).
- DBFS (
/dbfs/) 대신 UC Volume (/Volumes/) 경로를 사용합니다. 이것이 현재 Databricks 권장 방식입니다. availableNow=TrueTrigger (트리거) 를 사용하므로 스트림은 처리 완료 후 자동 종료됩니다.
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로 설정하면amount는double,order_date는date로 자동 추론됩니다. 단, 처음 수집 시 일부 파일을 샘플링하여 추론하므로 핵심 컬럼은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가amount를 STRING으로 잘못 추론하는 경우 힌트로 교정합니다.
변형 시나리오 3: 특정 파일 패턴만 수집
성능 튜닝 포인트
정리
핵심 요약
다음 단계
- JSON 수집과 스키마 진화 — JSON 포맷 수집과 새 컬럼이 추가되었을 때의 자동 대응을 실습합니다.