이 문서는 데이터 엔지니어링 섹션의 일부입니다.
개념
💡 Auto Loader 는 클라우드 스토리지(S3, ADLS, GCS)에 새로 도착한 파일을 자동으로 감지하고 수집 하는 Databricks의 증분 파일 수집 기능입니다. Spark Structured Streaming의 cloudFiles 소스 형식으로 구현되어 있습니다.
비유하자면, 우편함을 계속 지켜보다가 새 편지가 도착하면 자동으로 꺼내서 정리해 주는 비서와 같습니다. 이미 읽은 편지는 다시 읽지 않고, 새 편지만 처리합니다.
왜 Auto Loader가 필요한가요?
일반적인spark.read로 파일을 읽으면 매번 모든 파일을 처음부터 다시 읽습니다. 파일이 수천~수만 개로 늘어나면 매번 전체를 스캔하는 것은 매우 비용이 높은입니다.
💡 Exactly-Once 처리 보장: Auto Loader는 RocksDB 기반 체크포인트에 처리 상태를 기록하여, 각 파일이 정확히 한 번만 처리되도록 보장합니다. 장애가 발생해도 체크포인트에서 재시작하여 중복이나 유실이 발생하지 않습니다.
지원 스토리지 소스
지원 파일 포맷
파일 감지 모드
Auto Loader는 두 가지 파일 감지 모드를 제공합니다.Directory Listing (기본값)
주기적으로 디렉토리를 스캔하여 새 파일을 찾습니다.File Notification (File Events)
클라우드 이벤트 서비스(S3 Events, Azure Event Grid, GCS Pub/Sub)를 활용하여 새 파일 알림을 받습니다.🆕 Auto Loader with File Events (GA): 최근 GA된 새로운 모드로, File Notification의 효율성과 Directory Listing의 간편함을 결합했습니다. 별도의 클라우드 이벤트 설정 없이도 높은 성능을 제공합니다.
모드 선택 가이드
스키마 추론과 진화
Auto Loader의 가장 강력한 기능 중 하나는 스키마를 자동으로 추론하고 변화에 대응 하는 것입니다.스키마 추론 (Schema Inference)
처음 수집할 때, Auto Loader가 파일 샘플을 읽어서 자동으로 스키마(컬럼과 타입)를 추론 합니다. 추론된 스키마는schemaLocation에 저장되어, 이후 수집 시 재사용됩니다.
스키마 진화 (Schema Evolution)
새 파일에 새로운 컬럼이 추가 되거나 타입이 변경 되면, Auto Loader가 이를 감지하고 대응합니다.스키마 힌트 (Schema Hints)
자동 추론이 부정확한 경우, 특정 컬럼의 타입을 수동으로 지정 할 수 있습니다.Rescue Data Column
스키마에 맞지 않는 데이터를 별도 컬럼에 JSON 형태로 보존 하여 데이터 유실을 방지합니다.💡 SDP와의 통합: SDP(Spark Declarative Pipelines) 안에서 Auto Loader를 사용하면, 스키마 위치와 체크포인트를 수동으로 지정할 필요가 없습니다. SDP가 자동으로 관리합니다. 이것이 Auto Loader를 SDP와 함께 사용하는 것을 권장하는 이유입니다.
사용 방법
SQL 방식 (SDP 내에서 — 권장)
Python 방식 (독립 실행)
Trigger 옵션
메타데이터 컬럼 (_metadata)
Auto Loader는 수집된 파일의 메타데이터를 자동으로 제공합니다.
이 메타데이터는 Bronze 테이블에 함께 저장하면, 나중에 어떤 파일에서 어떤 데이터가 왔는지 추적하는 데 매우 유용합니다.
Auto Loader vs COPY INTO 비교
모범 사례
현업 사례: COPY INTO에서 Auto Loader로 전환한 후 파이프라인 안정성이 극적으로 개선된 사례
현업에서 Auto Loader의 가치를 가장 체감하는 순간은 “COPY INTO에서 전환한 직후” 입니다.사례: 물류 회사의 IoT 센서 데이터 파이프라인
체크포인트의 진짜 가치
Auto Loader의 체크포인트는 단순한 “어디까지 읽었는지” 기록이 아닙니다. 현업에서의 진짜 가치를 설명합니다.⚠️ 체크포인트를 삭제하면 벌어지는 일: 체크포인트 디렉토리를 삭제하면, Auto Loader는 “처음부터 다시 시작”합니다. 1.8억 파일을 전부 다시 읽게 되며, 타겟 테이블에 중복 데이터가 적재됩니다. 체크포인트는 절대로 삭제하지 마세요. 현업에서 이 실수를 하면 데이터 정합성 복구에 수일이 걸립니다.
수백만~수억 파일 처리 시 성능 특성
💡 현업에서는 이렇게 합니다: 파일 수가 100만 개를 넘어가면 반드시 File Events 모드 로 전환합니다. S3 Event Notification이나 Azure Event Grid를 설정하면, Auto Loader가 자동으로 이벤트 큐를 구독하여 새 파일만 즉시 감지합니다. 초기 설정에 30분이 더 걸리지만, 이후 수년간 일정한 성능을 보장합니다.
Auto Loader 운영 시 꼭 알아야 할 팁
⚠️ 이것을 안 하면: rescuedDataColumn을 설정하지 않으면, 스키마에 맞지 않는 데이터가 조용히 무시 됩니다. 소스 시스템이 JSON 구조를 변경했는데, 몇 주 후에야 “데이터가 빠져있다”는 것을 발견하게 됩니다. 항상 _rescued_data 컬럼을 모니터링하여 null이 아닌 행이 있으면 알림을 설정하세요.