중간고사 범위 (1~7주차, 이론)
반드시 설명할 수 있어야 하는 것
- 빅데이터의 3V(5V) — 각각 예시와 함께
- 빅데이터가 등장한 배경 3가지
- 파이프라인 5단계와 각 단계의 대표 도구
- 배치 vs 스트리밍의 차이와 각각이 적합한 문제
- Pandas DataFrame에서 선택·필터·집계·조인 코드 읽기
- 데이터 수집 방식 4가지(파일/DB/API/로그)와 메시지 큐의 역할
- 분산 저장이 필요한 이유 2가지 (scale-out, fault tolerance)
- HDFS의 NameNode / DataNode / 블록 / 복제 설명
- CSV·JSON·Parquet 비교 — 왜 Parquet이 분석에 유리한가
- 데이터 레이크와 raw/cleaned/curated 계층
- MapReduce의 map / shuffle / reduce — 워드카운트로 설명
- YARN이 하는 일
- Spark가 MapReduce보다 빠른 이유
- RDD와 DataFrame의 차이, Transformation vs Action, 지연 실행
예상 문제 유형
- "다음 시나리오는 배치와 스트리밍 중 무엇이 적합한가? 이유는?"
- "HDFS에서 DataNode 하나가 죽으면 무슨 일이 일어나는가?"
- "아래 Pandas 코드의 출력 결과를 쓰시오"
- "MapReduce로 지역별 매출 합계를 구하는 과정을 map/shuffle/reduce로 서술"
- "Spark에서
df.filter(...).groupBy(...).count()를 실행했는데 아무 일도 일어나지 않는 이유"
기말고사 범위 (전체, 이론 + 코드)
중간 범위에 더해:
- DataFrame / Spark SQL로 필터·집계·조인 작성
- 파티션, 셔플, 캐싱의 개념과 성능 영향
- 웨어하우스 vs 레이크 vs 레이크하우스
- 스타 스키마의 fact / dimension
- 윈도우 함수 SQL 읽기
- Iceberg/Delta가 제공하는 것 (ACID, 타임 트래블, 스키마 진화)
-
hdfs://,s3a://경로와 s3a 인증 설정 - 로컬/HDFS/S3에서 같은 코드로 읽는 원리
- DuckDB / Polars가 Spark 대신 적합한 상황
전체 파이프라인 한 장 요약
[수집] requests / DB 쿼리 / Kafka
│ raw (JSON, CSV 그대로)
▼
[저장] 로컬 ─ HDFS ─ S3 ← 경로 scheme만 다름
│ Parquet, 파티션 디렉터리
▼
[처리] Spark DataFrame / SQL ← filter → select → groupBy/join → write
│ cleaned / curated, Delta/Iceberg 테이블
▼
[분석] Spark SQL · DuckDB · Polars · Pandas
│ 윈도우 함수, 스타 스키마
▼
[활용] 대시보드, 리포트, 발표
종합 프로젝트 / 발표 (15주차) 가이드
- 공개 데이터 하나 선정 (수백 MB 이상 권장)
- 수집 코드 → raw 저장 (로컬 + S3/MinIO)
- Spark로 정제 → Parquet(파티션) 저장
- 분석 질문 3개를 Spark SQL 또는 DuckDB로 답하기
- 결과를 표/그래프로 정리해 5분 발표
평가 포인트: 각 단계가 왜 필요한지 설명할 수 있는가, 코드가 저장소를 바꿔도 동작하는가, 결과 검증을 했는가.