Azure Databricks를 활용한 데이터 병렬처리1

감자·2026년 3월 19일

microsoft_dataschool

목록 보기
25/28
post-thumbnail

목차

  1. Apache Spark란?
  2. Spark의 핵심 기능들
  3. Azure Databricks란?
  4. Azure Databricks 주요 기능
  5. Azure Databricks 실습 — 프로비저닝 및 기본 사용법
  6. Azure Databricks 인프라 구조
  7. Unity Catalog — 데이터 거버넌스
  8. 데이터 읽기
  9. Delta Lake로 데이터 관리

1. Apache Spark란?

한 줄 요약

Apache Spark = 대량의 데이터를 빠르게 처리하기 위한 오픈소스 분산 처리 프레임워크

쉽게 이해하기

일반 컴퓨터 1대로 1억 건의 데이터를 분석하면 몇 시간이 걸릴 수 있습니다. Spark는 이 데이터를 여러 컴퓨터(노드)에 나눠서 동시에(병렬로) 처리합니다. 마치 혼자 이삿짐을 나르는 것과 10명이 함께 나르는 것의 차이입니다.

Spark가 제공하는 통합 기능

기능설명
Batch Processing대량의 데이터를 한꺼번에 처리 (예: 매일 밤 하루치 데이터 정산)
Interactive SQLSQL 문으로 데이터를 즉시 조회
Real-time Processing실시간으로 들어오는 데이터를 즉각 처리 (예: 실시간 주식 분석)
Machine Learning머신러닝 모델 학습
Deep Learning딥러닝 모델 학습
Graph Processing관계 데이터(SNS 친구관계, 네트워크 등) 분석

Spark 아키텍처 구성도

[Spark SQL]  [Spark MLlib]  [Spark Streaming]  [GraphX]
     └──────────────┴──────────────┴───────────────┘
                    Spark Core Engine
     ┌──────────────┬──────────────┬───────────────┐
   [Yarn]         [Mesos]     [Standalone Scheduler]
  • Spark SQL: SQL로 데이터를 쿼리하는 모듈
  • Spark MLlib: 머신러닝 라이브러리
  • Spark Streaming: 실시간 데이터 스트리밍 처리
  • GraphX: 그래프 연산 처리
  • Spark Core Engine: 위 모든 기능의 기반이 되는 핵심 엔진
  • Yarn / Mesos / Standalone: 클러스터 자원을 관리하는 스케줄러

2. Spark의 핵심 기능들

왜 Spark를 사용해야 하는가?

3가지 핵심 강점:

  1. 속도 — 메모리(RAM) 내에서 데이터를 처리하기 때문에 기존 Hadoop 대비 최대 100배 빠름

    • Hadoop은 처리 중간중간에 디스크에 저장하는 방식 → 느림
    • Spark는 메모리에서 모든 것을 처리 → 빠름
  2. 커뮤니티 — 1,000명 이상의 기여자를 가진 가장 큰 오픈소스 빅데이터 프로젝트

  3. 다양한 언어 지원 — Scala, Java, Python, Spark SQL, GraphX, Streaming, MLlib 모두 지원


Spark SQL 상세

Spark SQL = 구조화된 데이터를 처리하는 분산 SQL 쿼리 엔진

특징

  • 외부 데이터베이스, CSV/JSON 같은 파일, Hive 테이블 등 다양한 데이터 소스 연결 가능
  • SQL 또는 HiveQL로 데이터 조회 가능
  • Python, Scala, Java에서 코드로 직접 사용 가능
  • Catalyst Optimizer + Tungsten Execution 기술로 쿼리 자동 최적화
    • Catalyst: 쿼리 실행 계획을 자동으로 최적화해주는 엔진 (사람이 직접 최적화하지 않아도 됨)
    • Tungsten: CPU/메모리를 극한까지 활용해 실행 속도를 높이는 엔진

Spark Structured Streaming 상세

Structured Streaming = 실시간 데이터 스트림을 처리하는 엔진

핵심 개념

  • 데이터 스트림을 끝없이 늘어나는 테이블(Unbounded Table) 로 바라봄
  • 새로운 데이터가 들어올 때마다 자동으로 결과를 업데이트

핵심 보장 사항

  • 장애가 발생해도 데이터 손실 없이 복구
  • 중복 없이 딱 한 번(Exactly Once) 처리 보장

지원 기능

  • Streaming 집계, 이벤트 타임 윈도우 처리
  • Stream-to-Batch 조인 (실시간 데이터와 과거 데이터를 조인)
  • Kafka, 파일(JSON, CSV, Parquet) 등 다양한 소스 지원

Spark GraphX 상세

GraphX = 그래프(연결 관계) 데이터를 분석하는 API

실생활 예시

  • SNS에서 "친구의 친구" 찾기
  • 웹 페이지 간의 링크 관계 분석 (구글 PageRank)
  • 물류 네트워크 최적화

제공 알고리즘

  • PageRank: 웹 페이지 중요도 계산 (구글 검색 원리)
  • Connected Components: 연결된 컴포넌트 찾기
  • Label Propagation: 커뮤니티 감지
  • Triangle Count: 삼각형 관계 수 계산

3. Azure Databricks란?

한 줄 요약

Azure Databricks = Microsoft Azure + Databricks의 합작 서비스. Apache Spark를 클라우드에서 쉽게 쓸 수 있게 해주는 플랫폼

쉽게 이해하기

Spark를 직접 설치하고 운영하는 것은 매우 복잡합니다. Azure Databricks는 이 복잡한 과정을 GUI(그래픽 인터페이스)로 단순화해줍니다. 마치 서버를 직접 구축하는 것과 클라우드 서비스를 쓰는 차이입니다.

Databricks + Microsoft의 결합 강점

Databricks가 제공하는 것Microsoft가 제공하는 것
Apache Spark 개발자와 협업하여 설계된 플랫폼엔터프라이즈급 Azure 보안 (AD, SLA)
원클릭 설정 및 간소화된 워크플로우Azure 서비스와의 네이티브 통합 (Power BI, Cosmos DB 등)
다양한 관련자들이 협업할 수 있는 인터랙티브 Workspace-

사용 목적 3가지

  1. 스트리밍 분석: Kafka, Flume 같은 기술로 실시간 데이터 수집 및 분석
  2. 대화형 데이터 분석: 비즈니스 분석가나 데이터 엔지니어가 데이터를 탐색하고 준비
  3. 기계 학습: 데이터 과학자가 ML 라이브러리를 활용해 머신러닝 수행

Azure Databricks 성능 비교

벤치마크 결과:

비교 대상결과
Databricks vs 일반 Apache Spark전체 쿼리 수행 시간 기준 약 5배 빠름, Geometric 평균 약 4배 빠름
Databricks vs PrestoRicher ANSI SQL 지원으로 약 8배 빠름
Databricks vs Apache Impala (온프레미스)CPU 효율 기준 약 3배 효율적

Azure Databricks 활용 사례 (Use Case)

데이터 파이프라인의 각 단계:

데이터 수집(Ingest) → 저장(Store) → 준비/학습(Prep & Train) → 모델/서빙(Model & Serve) → 인텔리전스(Intelligence)

3가지 주요 활용 패턴:

  1. 모던 빅데이터 웨어하우스

    • 비즈니스 앱 데이터 → Azure Storage → Azure Databricks(Spark) → Azure SQL DW → Power BI 대시보드
  2. 빅데이터 심화 분석

    • 로그/파일/미디어 → Azure Storage → Azure Databricks(Spark) → Cosmos DB / SQL DW → 예측 앱
  3. 빅데이터 실시간 분석

    • IoT 센서/디바이스 → Azure EventHub → Azure Databricks(Spark) → Azure SQL DW → 대시보드

4. Azure Databricks 주요 기능

4-1. Collaborative Workspace (협업 공간)

여러 사람이 함께 작업하는 통합 환경

기능설명
빠른 시작클릭 한 번으로 새 Spark 환경 구성
대화형 검증Python, R, Scala, SQL 등 다양한 언어로 노트북에서 즉시 실행 및 검증
협업GitHub, Bitbucket 연동 + 실시간으로 같은 노트북 공동 작업
시각화클릭만으로 다양한 차트 생성, matplotlib/ggplot/D3 같은 고급 라이브러리도 지원
대시보드Power BI와 결합해 인사이트를 공유

4-2. Deploy Production Jobs & Workflows (운영 작업 배포)

자동화된 작업 실행 및 파이프라인 관리

기능설명
Job Scheduler특정 스케줄(매일 새벽 3시 등)에 자동으로 작업 실행
Notebook Workflows노트북들을 연결해 다단계 파이프라인 구성
Job으로 Notebook 실행API 호출이나 클릭으로 기존 Spark Job 실행
Notifications & LogsAlert 설정 및 감사 로그로 모니터링 및 문제 해결
Azure 서비스 통합SQL DW, Cosmos DB, Data Lake Store, Blob Storage, Event Hub와 네이티브 통합

4-3. Optimized Databricks Runtime Engine (최적화된 실행 엔진)

성능을 극대화한 맞춤형 Spark 실행 환경

기능설명
최적화된 I/ODatabricks I/O Module(DBIO)로 클라우드 환경에서 Spark 처리 속도 대폭 향상
완전 관리형 플랫폼Azure에서 전적으로 관리 → 빅데이터/ML의 복잡성 제거
Serverless Infrastructure신뢰도 확보 + 비용 효율 + 운영 복잡성 제거
무한 확장전 세계적으로 제한 없이 사용 가능

4-4. Core Artifacts (핵심 구성 요소)

Azure Databricks는 5가지 핵심 요소로 구성됩니다:

Azure Databricks
├── Clusters (클러스터)
├── Workspace (작업공간)
├── Jobs (작업)
├── Libraries (라이브러리)
└── Notebooks (노트북)

Clusters (클러스터)

  • 노트북 코드를 실제로 실행하는 컴퓨팅 파워
  • Auto Scaling: 부하에 따라 자동으로 노드 수 증감
  • Auto Termination: 비활성화 후 일정 시간이 지나면 자동 종료 → 비용 절감

클러스터 아키텍처:

Driver Node (SparkContext)
    │
Cluster Manager
    ├── Worker Node (Cache + Task)
    ├── Worker Node (Cache + Task)
    └── Worker Node (Cache + Task)
    
    모두 데이터 소스(HDFS, SQL, NoSQL...)와 연결
  • Driver: 사용자의 main 함수를 실행하고 Worker들에게 작업 분배. 결과 수집
  • Worker: 실제 데이터를 읽고 처리하는 노드. RDD 형태로 데이터를 변환/캐싱

Workspace (작업공간)

  • 리소스를 관리하기 편한 계층 폴더 구조
  • 모든 사용자는 자신만의 개인 디렉토리 보유
  • 보안 협업 기능 제공

Jobs (작업)

  • Spark 코드를 실행하기 위해 Job으로 제출하는 메커니즘
  • Job은 Notebook이나 JAR 파일을 실행

Libraries (라이브러리)

  • Python, R, Java, Scala 외부 라이브러리 저장 및 관리
  • 소스코드를 import해서 생성 (import 후 수정 불가, 삭제/덮어쓰기만 가능)

Notebooks (노트북)

  • Spark 앱 개발의 핵심 도구
  • Prototyping(빠른 시제품 제작), Rapid Development, Exploration, Discovery, Iterative Development에 적합

4-5. Security — Azure Active Directory 통합

Azure Databricks는 Azure Active Directory(AAD)와 완전히 통합되어 보안 관리

  • Databricks 자체적으로 사용자/접속 관리 불필요 → AAD가 일괄 관리
  • AAD 사용자가 Clusters, Jobs, Notebooks에 직접 접근 제어 가능
  • SSO(Single Sign-On)로 단일 인증 위임
  • Notebooks와 결과물은 Databricks에 저장되지만, AAD 기반 접근 제어로 인가된 사용자만 접근 가능

4-6. Visualization (시각화)

  • 모든 Notebook은 언어에 상관없이 시각화 지원
  • 노트북 실행 시 지정 위치에 그래프 자동 렌더링
  • Bar, Scatter, Map, Line, Area, Pie, Quantile, Histogram, Box plot, Pivot 등 다양한 차트 지원
  • HTML로 export 가능, Matplotlib 사용 시 이미지로 저장 가능

4-7. Databases & Tables

  • Tables: Spark SQL/API에서 쿼리되어 구조화된 데이터를 활용하게 해줌
  • Databases: 관련 Tables의 묶음
  • Hive metastore를 사용해 테이블 관리 (모든 파일 포맷 + Hive 데이터소스 지원)
  • Apache Spark DataFrame처럼 caching, filtering 등 모든 Spark 동작 적용 가능
  • Partitioned Tables & Partition Pruning: 파티션 컬럼으로 쿼리 성능 향상

4-8. Azure Databricks Delta

Delta = Apache Spark 기반의 차세대 통합 분석 엔진

기능설명
ACID Transaction일치하지 않는 데이터를 허용하지 않는 Serializable isolation Level 제공
Efficient Upserts지연된 데이터에 대한 세분화된 update 및 record 변경
고처리량 스트리밍 입수대용량 데이터를 직접 query 테이블로 수집
최적화 Data LayoutQuery 패턴에 맞는 데이터 레이아웃을 자동 선택/관리
Schema EnforcementIngestion 중 자동으로 Bad record를 정리해 Schema 일관성 유지
Data Versioning데이터 버전 관리로 이전 데이터 복구 및 rollback 용이
수행 Engine 최적화중첩 데이터 타입, 고순서 함수, Range & Skew Join 최적화

4-9. CLI & Rest API

Databricks CLI
├── Workspace CLI (노트북/폴더 관리)
└── DBFS CLI (Databricks 파일 시스템 관리)

Databricks REST API
├── Cluster API (클러스터 생성/수정/삭제)
├── DBFS API (파일 시스템 상호작용)
├── Groups API (사용자 그룹 관리)
├── Instance Profile API (인스턴스 추가/삭제)
├── Job API (작업 생성/수정/삭제)
├── Library API (라이브러리 관리)
└── Workspace API (노트북/폴더 목록/import/export/삭제)

4-10. 통합 플랫폼의 장점

  • 개발자 생산성 향상: 하나의 일관된 API 세트
  • 동일 추상화 공유: 모든 Spark 시스템이 같은 RDD(Resilient Distributed Datasets) 추상화 사용
  • 유연한 파이프라인: 같은 앱에서 다양한 처리 방식(스트리밍, 배치, ML 등)을 섞어서 사용 가능
  • 성능 향상: 엔진 간 불필요한 데이터 이동 제거

4-11. 엔터프라이즈 보안

3가지 보안 기반:

  1. Azure Entra ID (구 Azure Active Directory) — 통합 신원 관리
  2. 역할 기반 액세스 제어(RBAC) — 누가 무엇을 할 수 있는지 세밀하게 제어
  3. Enterprise SLA — 기업 수준의 서비스 수준 협약

4-12. 클라우드 서비스와의 통합

Azure Databricks는 다음 서비스와 네이티브 통합:

  • Cosmos DB: NoSQL 글로벌 데이터베이스
  • Data Factory: 데이터 이동, 파이프라인, 오케스트레이션
  • Data Lake Store: 대규모 비정형 데이터 저장
  • 인지 서비스: AI/ML 서비스 (Vision, Speech, Language 등)
  • SQL Data Warehouse: 대규모 SQL 분석
  • Power BI: 비즈니스 인텔리전스 대시보드
  • Blob 저장소: 대용량 오브젝트 스토리지

5. Azure Databricks 실습 — 프로비저닝 및 기본 사용법

5-1. 작업 영역(Workspace) 만들기

Azure Portal에서 다음 정보로 Databricks 작업 영역 생성:

항목값
구독Azure 구독 선택
리소스 그룹3dtXXX-databricks-group
작업 공간 이름3dtXXX-databricks
지역강사 안내
가격 등급프리미엄(+ 역할 기반 액세스 제어)
관리되는 리소스 그룹3dtXXX-databricks-group-managed

XXX는 본인의 번호로 대체


5-2. 클러스터 생성

클러스터 = 코드를 실행하는 컴퓨팅 엔진

  • Azure Databricks는 Apache Spark 클러스터를 사용하여 여러 노드에서 병렬로 데이터 처리
  • 클러스터는 드라이버 노드(작업 조정)와 워커 노드(실제 처리)로 구성

실습에서는 단일 노드 클러스터 생성 (리소스 최소화 목적)

주요 설정:

  • Compute 이름 입력
  • Databricks 런타임 선택 (예: 15.4 LTS, Scala 2.12, Spark 3.5.0)
  • 노드 유형 선택 (예: Standard_D4ds_v5, 16GB/4 Cores)
  • 단일 노드 체크
  • 비활성 60분 후 자동 종료 설정

5-3. 노트북에서 다양한 언어 사용하기

매직 커맨드 %를 사용해 하나의 노트북에서 여러 언어 혼용 가능:

Python

%python
print("Hello Python!")

Scala

%scala
println("Hello Scala")

R

%r
print("Hello R!", quote=FALSE)

SQL

%sql
SELECT * FROM myTable

5-4. 다양한 Utility 지원

sh — 클러스터의 드라이버 노드에서 shell 커맨드 실행

%sh
ps | grep 'java'

run — 다른 노트북을 현재 노트북에서 실행

%run "./Include/notebook2"

5-5. Markdown 활용하기

노트북에서 코드를 문서화하거나 설명할 때 Markdown 사용:

제목

# 제목 1
## 제목 2
### 제목 3

강조

**굵게**
*기울임*
~~취소선~~

목록

- 항목 1
- 항목 2

1. 첫 번째
2. 두 번째

링크와 이미지

[링크 텍스트](https://www.google.com)
![이미지 설명](이미지URL)

5-6. Azure Databricks 주요 개념 정리

개념설명
WorkspaceNotebook, 라이브러리, 실험을 관리하는 사용자 인터페이스. 폴더로 정리하고 팀과 공유 가능
Notebook실행 가능한 코드 + 시각화 + 설명 텍스트를 포함하는 대화형 문서. Python/R/Scala/SQL 지원
ClusterAzure Databricks의 계산 엔진. 필요에 따라 생성·크기 조정 가능. 드라이버 + 워커 노드로 구성
Job자동화된 작업을 예약하고 실행하는 메커니즘. 스케줄 트리거 또는 이벤트 응답으로 실행
Databricks RuntimeApache Spark의 성능 최적화 버전. 머신 러닝, 그래프 처리, 유전체학 최적화 포함
Delta Lake데이터 레이크에 안정성과 확장성을 제공하는 오픈소스 스토리지 계층. ACID 트랜잭션 지원
Databricks SQLDatabricks 내의 데이터에 SQL 쿼리를 실행. SQL 편집기 + 대시보드 + 자동 시각화 도구 포함
MLflow엔드투엔드 머신 러닝 수명 주기를 관리하는 오픈소스 플랫폼. 실험 추적·모델 관리·배포

6. Azure Databricks 인프라 구조

6-1. 인프라 및 플랫폼 구성

Azure Databricks는 크게 Control Plane과 Data Plane으로 나뉩니다:

[대화형 사용자] ←→ Control Plane ←→ Data Plane
[API 호출]    ←→    - 웹 앱          - 클러스터 (탄력적 컴퓨팅)
                    - MosaicAI        - SQL 웨어하우스
                    - 워크플로우      - 저장소 (S3, ADLS, GCS)
                    - Git 폴더        - Delta Lake
                    - 노트북
                    - DBSQL
                    [Unity Catalog]
                    - 메타스토어
                    - 액세스 제어
                    - 워크스페이스 관리

Control Plane: Databricks가 관리하는 서비스 영역 (웹 UI, 설정, 인증 등)

Data Plane: 실제 데이터가 처리되고 저장되는 영역 (클러스터, 스토리지)


6-2. Databricks 컴퓨트 종류

런타임 종류

런타임설명
표준 런타임Apache Spark와 여러 구성 요소를 통합한 빅데이터 분석 환경
머신 러닝 런타임TensorFlow, Keras, PyTorch, XGBoost 등 ML 라이브러리 추가 포함

특화 컴퓨팅

종류설명
SQL 웨어하우스SQL BI 워크로드 최적화를 위해 특별 설계. 내장 최적화 기능
Databricks Photon위 모두를 강화하는 네이티브 벡터화 실행 엔진

6-3. 서버리스(Serverless) 플랫폼

서버리스 = 서버를 직접 관리하지 않아도 되는 방식

기존 방식과의 차이:

  • 기존: 클러스터를 미리 만들고, 시작될 때까지 기다리고, 사용 후 직접 종료
  • 서버리스: 즉시 시작, 자동 확장, 자동 종료, 사용한 만큼만 비용 지불

서버리스의 3가지 이점

이점상세 내용
더 높은 사용자 생산성클러스터 시작 대기 없이 쿼리 즉시 시작 / 즉각적인 자동 확장으로 동시 사용자 증가 지원
관리 필요 없음설정 없음 / 성능 튜닝 없음 / 용량 관리 없음 / 자동 업그레이드 및 패치
낮은 비용사용한 만큼만 지불 / 유휴 클러스터 비용 제거 / 리소스 과다 프로비저닝 없음 / 마지막 쿼리 후 10분 후 자동 제거

6-4. 데이터브릭스 데이터 인텔리전스 플랫폼 전체 구조

┌─────────────────────────────────────────────────────────────┐
│  Workflows  │ Delta Live  │ Databricks  │ AI/BI Dashboard  │ Mosaic AI │
│             │   Tables    │     SQL     │    및 Genie      │           │
├─────────────────────────────────────────────────────────────┤
│                      Databricks IQ                          │
├─────────────────────────────────────────────────────────────┤
│                      Unity Catalog                          │
├─────────────────────────────────────────────────────────────┤
│                       Delta Lake                            │
├─────────────────────────────────────────────────────────────┤
│              오픈 데이터 레이크 (모든 원시 데이터)           │
│          (로그, 텍스트, 오디오, 비디오, 이미지)             │
└─────────────────────────────────────────────────────────────┘

6-5. 저장 및 거버넌스

구성 요소설명
클라우드 데이터 스토리지AWS S3, Azure Data Lake Storage, Google Cloud Storage 지원
Delta Lake오픈소스 스토리지 프로토콜
Unity Catalog데이터 거버넌스 및 메타데이터 관리
Delta Sharing조직 간 데이터 안전 공유 프로토콜
Databricks Marketplace데이터 및 AI 자산 마켓플레이스
Databricks 클린 룸안전한 협업 데이터 공간

6-6. Mosaic AI — 데이터 과학, 머신 러닝, 생성형 AI

생성적 및 기존 AI 애플리케이션 개발을 위한 종단 간 지원:

기능설명
MLflowML 실험 추적 및 모델 관리
AutoML자동 머신러닝
Feature Store특징값(Feature) 저장 및 재사용
Model Serving학습된 모델을 API로 서빙
Vector Search벡터 기반 유사도 검색
AI PlaygroundLLM 실험 공간
Agent FrameworkAI 에이전트 구축
Model Training대규모 모델 학습

6-7. 오케스트레이션 및 ETL

도구역할
Databricks Workflows제어 흐름 — DLT 파이프라인을 포함하여 플랫폼의 모든 것을 조율
Delta Live Tables (DLT)데이터 흐름 — Delta Lake를 위한 자동화된 데이터 파이프라인

6-8. 데이터웨어하우징 및 BI

도구설명
Databricks SQL최고의 가성비로 데이터 웨어하우징 및 분석 수행
AI/BI Dashboards통합된 시각화 및 프레젠테이션 환경
AI/BI Genie (공개 프리뷰)기업 내 고유한 용어를 사용하여 자연어로 데이터 질의

6-9. Databricks IQ — 데이터 인텔리전스 엔진

DatabricksIQ = 플랫폼 전반의 AI 강화 기능

DatabricksIQ
├── Natural Language Interfaces (자연어 인터페이스)
├── Intelligent Search and Discovery (지능형 검색)
├── AI-Powered Governance (AI 기반 거버넌스)
└── Simplified Administration and Maintenance (간소화된 관리)

데이터 소스: Unity Catalog / Docs / Dashboards / Notebooks / 
             Org Chart / Popularity / Lineage / Queries

Databricks Assistant: AI 기반 코드 작성 도우미


7. Unity Catalog — 데이터 거버넌스

7-1. Unity Catalog란?

Unity Catalog = 여러 Databricks 워크스페이스에 걸친 통합 데이터 거버넌스 플랫폼

Unity Catalog 이전 vs 이후

이전 (Unity Catalog 없이):

워크스페이스 1          워크스페이스 2
├── 사용자/그룹 관리    ├── 사용자/그룹 관리
├── 메타스토어          ├── 메타스토어
├── 액세스 제어         ├── 액세스 제어
└── 컴퓨팅 리소스       └── 컴퓨팅 리소스

→ 각 워크스페이스마다 별도로 관리해야 해서 복잡하고 비효율적

이후 (Unity Catalog 사용 시):

            Unity Catalog
    ┌───────────────────────────┐
    │ 사용자/그룹 관리           │
    │ 메타스토어                 │
    │ 액세스 제어                │
    └──────┬────────────────────┘
           │ 공통 관리
    ┌──────┴──────────────┐
    │ 워크스페이스 1        │ 워크스페이스 2
    │ (컴퓨팅 리소스)      │ (컴퓨팅 리소스)
    └────────────────────────────┘

→ 한 번만 설정하면 모든 워크스페이스에 적용


7-2. Unity Catalog의 메타스토어 구성

메타스토어
├── 외부 저장소 액세스
├── 카탈로그 (데이터 계층 구조의 최상위)
├── 쿼리 페더레이션 (외부 데이터 소스 연결)
└── Delta Sharing (데이터 공유)

7-3. Unity Catalog의 객체 계층 구조

메타스토어
└── 카탈로그
    └── 스키마 (데이터베이스)
        ├── 테이블
        ├── 뷰
        ├── 볼륨 (파일 저장소)
        ├── 함수
        └── 모델

데이터 접근 방법:

SELECT * FROM catalog1.schema1.table1;

7-4. Unity Catalog의 주요 기능

기능설명
통합 네임스페이스모든 워크스페이스에서 데이터 세트, 파일, ML 모델에 대한 단일 네임스페이스 제공
세분화된 액세스 제어표준 SQL GRANT/REVOKE 문으로 정확한 접근 권한 설정 (최소 권한 원칙)
데이터 계보(Lineage)데이터 흐름을 추적하고 시간에 따른 데이터 변환 이해
중앙화된 메타데이터 관리정의·설명 등 메타데이터를 중앙에서 관리, 프로젝트 전반에서 일관성 유지
Databricks SQL과 통합플랫폼 외부로 데이터를 이동하지 않고도 데이터 자산 원활하게 쿼리/관리

8. 데이터 읽기

8-1. 연결 가능한 데이터 원본

Azure Databricks는 다음 데이터 원본에 연결 가능:

  • Data Lake (대규모 원시 데이터 저장소)
  • Cosmos DB (NoSQL 글로벌 DB)
  • SQL Data Warehouse (대규모 SQL 분석)
  • SQL Database (관계형 DB)
  • Event Hubs (실시간 이벤트 스트리밍)

8-2. SQL vs DataFrame — 동일 작업 비교표

SQLDataFrame (Python)
SELECT col_1 FROM myTabledf.select(col("col_1"))
DESCRIBE myTabledf.printSchema()
SELECT * FROM myTable WHERE col_1 > 0df.filter(col("col_1") > 0)
..GROUP BY col_2..groupBy(col("col_2"))
..ORDER BY col_2..orderBy(col("col_2"))
..WHERE year(col_3) > 1990..filter(year(col("col_3")) > 1990)
SELECT * FROM myTable LIMIT 10df.limit(10)
display(myTable) (텍스트 형태)df.show()
display(myTable) (HTML 형태)display(df)

8-3. 실습 — 데이터 업로드 및 SQL 조회

1단계: 샘플 데이터 다운로드

https://raw.githubusercontent.com/~~~

2단계: 카탈로그에 테이블 생성

  • 카탈로그 > 내 조직 아래 이름 > default > 만들기 > 테이블 만들기 > 데이터 추가 또는 업로드 선택

3단계: SQL로 데이터 조회

%sql
SELECT * FROM `카탈로그조직이름`.`default`.`products`;

4단계: DataFrame으로 데이터 분석

df = spark.sql("SELECT * FROM products")
df = df.filter("Category == 'Road Bikes'")
display(df)

9. Delta Lake로 데이터 관리

9-1. Delta Lake란?

Delta Lake = 클라우드 저장소에 파일을 읽고 쓰기 위한 오픈소스 프로토콜

쉽게 이해하기

일반 데이터 레이크는 파일을 그냥 저장합니다. 문제는:

  • 여러 사람이 동시에 같은 파일을 수정하면 충돌 발생
  • 중간에 오류가 나면 데이터가 손상될 수 있음
  • 과거 데이터로 돌아갈 수 없음

Delta Lake는 이 문제를 해결합니다. 데이터베이스처럼 트랜잭션, 버전 관리, 스키마 관리를 지원하면서 저렴한 클라우드 스토리지를 사용합니다.

Delta 테이블 저장 구조

DeltaTableName/
├── [Parquet 파일들]  ← 실제 데이터
└── _delta_log/       ← 트랜잭션 로그 (메타데이터)
    ├── ...0000.json
    ├── ...0001.json
    └── ...0002.json
  • 데이터는 Parquet 파일로 저장 (압축 효율 높은 컬럼형 포맷)
  • 메타데이터는 트랜잭션 로그(_delta_log)에 기록

9-2. Delta Lake 생성 방법

SQL로 생성:

CREATE TABLE orders USING DELTA

Python으로 생성:

df.write.format("delta")

Delta Lake는 Databricks에서 생성된 테이블의 기본 형식입니다.


9-3. Delta Lake 주요 기능 상세

ACID 트랜잭션

클라우드 기반 객체 스토리지에 저장된 데이터에 대해 ACID 트랜잭션을 테이블 수준에서 보장:

속성설명
Atomicity (원자성)전체 트랜잭션이 완료되거나, 아니면 아예 실행 안 됨 (중간 상태 없음)
Consistency (일관성)데이터는 규칙을 따르거나, 트랜잭션이 롤백됨
Isolation (격리성)한 트랜잭션이 완전히 완료된 후 다른 트랜잭션이 시작
Durability (지속성)완료된 데이터는 영구적인 상태로 저장

DML 작업 (데이터 조작 언어)

작업설명
INSERT새로운 행 추가
UPDATE기존 값 업데이트
DELETE행 삭제
MERGE소스 테이블에서 레코드를 선택해 대상 테이블에서 여러 DML 작업 수행

시간 여행 (Time Travel)

Delta 테이블은 모든 쓰기 작업의 트랜잭션 로그를 보관:

  • 과거 버전 데이터 쿼리 가능
  • 스냅샷 격리 (다른 트랜잭션에 영향 없이 특정 시점 데이터 읽기)
  • 감사(Auditing) 목적으로 변경 이력 추적

스키마 진화 및 강제

기능설명
스키마 진화(Schema Evolution)데이터 변경에 따라 Delta 테이블의 스키마가 자동으로 조정
스키마 강제(Schema Enforcement)입력 데이터가 테이블의 정의된 스키마와 일치하는지 자동 검증

그 외 기능

  • 배치와 스트리밍 통합 처리
  • 성능 최적화
  • 확장 가능한 메타데이터

9-4. 메달리온 아키텍처 (Medallion Architecture / Multi Hop)

메달리온 아키텍처 = 데이터를 품질 수준별로 3단계 레이어에 저장하는 설계 패턴

데이터 소스 → [브론즈] → [실버] → [골드] → 사용자(BI, ML, 스트리밍)
레이어역할특징
브론즈 (Bronze)원시 데이터 저장외부 소스에서 온 데이터 그대로 저장 / 장기간 보관 (수 년) / 필요 시 PII(개인정보) 제거
실버 (Silver)정제 및 검증필터·정제·조인 및 브론즈 데이터 보강 / 구조를 정의하고 스키마 진화/강제 / 단일 진실 원천 (Single source of truth)
골드 (Gold)비즈니스 수준 집계바로 사용 가능한 정제된 데이터 / 실버 데이터의 비즈니스 수준 집계 / BI·ML·앱에 최종 전달

각 레이어에서 사용되는 DML 작업:

브론즈: INSERT (새 데이터 삽입)
  ↓
실버: DELETE, MERGE (정제, 중복 제거)
  ↓
골드: OVERWRITE, AGGREGATE (최종 집계)

Delta Lake ACID 지원 덕분에 데이터 변환 프로세스 전체에서 insert, delete, update, merge가 안전하게 가능합니다.


9-5. 실제 세계의 아키텍처

실제 환경에서는 더 복잡합니다:

데이터 스트림 소스 ──→ 브론즈A ──→ 실버A ──→ 골드A ──→ BI & 리포팅
배치 소스 ──────────→ 브론즈B ──→ 실버B ──→ 골드B ──→ ML & AI
Data Lake ──────────→ 브론즈C ──→ 실버C ──→           ──→ 스트리밍 분석
데이터 스트림 소스 ──→ 브론즈D ──→         ──→ 골드D
  • 여러 소스가 여러 브론즈로
  • 여러 브론즈가 조합되어 실버로
  • 실버가 여러 골드로
  • 골드가 여러 사용자/시스템으로

모든 계층이 Delta Lake 위에서 동작합니다.


이 문서는 "Azure Databricks를 활용한 데이터 병렬처리 — 데이터스쿨 3기" 강의 자료를 기반으로 정리되었습니다.

profile
제 별명이 감자입니다

0개의 댓글