DATABRICKS-Certified-Developer-5
Spark DataFrame 기초 실습 시작하기
1. 실습 시작 전 확인 사항 (매우 중요)
본격적으로 실습을 시작하기 전에, 두 가지를 반드시 확인해야 합니다.
✅ 1) 데이터셋이 정상적으로 설치되었는지 확인
Databricks 환경의 왼쪽 메뉴에서 다음 순서로 이동합니다.
- Data 클릭
- Add Data
- DBFS (Databricks File System)
- FileStore
- Tables
- 이전 강의에서 생성한 데이터 폴더
이 경로에서:
- 이전 강의에서 업로드한 모든 데이터 파일이 보인다면
👉 데이터셋은 정상적으로 설치된 것입니다.
✅ 2) 클러스터가 실행 중인지 확인
Apache Spark는 클러스터 없이는 아무 작업도 할 수 없습니다.
Community Edition에서는:
- 동시에 하나의 클러스터만 실행 가능합니다.
클러스터가 없다면:
- Create Cluster 클릭
- 클러스터 이름 입력
- Create Cluster 클릭
자세한 클러스터 생성 방법은
👉 이전 강의 영상을 참고하시면 됩니다.
2. Workspace 및 노트북 생성
이제 Spark 코드를 작성할 노트북(Notebook) 을 생성하겠습니다.
2-1. Workspace 폴더 생성
왼쪽 메뉴에서:
- Workspace 클릭
- Workspace 옆 화살표(▶) 클릭
- Create → Folder 선택
폴더 이름 예시:
Databricks Certified Associate Developer Training
2-2. Notebook 생성
생성한 폴더 안에서:
- Create → Notebook 클릭
다음 정보를 입력합니다.
- Notebook Name
DataFrame_Basics
- Language
Scala
- Cluster
- 이미 생성해 둔 클러스터 선택
모두 입력한 후:
- Create 클릭
이제 Spark 클러스터에 연결된 노트북이 생성되었습니다.
3. Spark Session 이해하기
Databricks 노트북에서는 이미 Spark Session이 자동으로 생성되어 있습니다.
Spark Session은:
- Spark 애플리케이션의 진입점(entry point)
- 클러스터 매니저 및 Executor와 통신하는 창구
Databricks에서는 기본적으로
👉 spark 라는 변수명으로 제공됩니다.
Spark Session 확인
노트북 셀에 다음을 입력하고 실행해 보세요.
1 | spark |
정상적으로 실행되면
👉 현재 사용 중인 Spark Session 정보가 출력됩니다.
4. Spark DataFrame 생성하기 (JSON 파일)
이제 실제 데이터를 읽어서 DataFrame을 만들어 보겠습니다.
4-1. DataFrameReader 사용
Spark Session의 read 메서드는
👉 DataFrameReader를 반환합니다.
1 | spark.read |
이를 이용해 외부 데이터를 DataFrame으로 읽을 수 있습니다.
4-2. customer.json 파일로 DataFrame 생성
먼저 DataFrame 변수를 하나 정의합니다.
1 | val customerDF = spark.read |
이 코드는 다음 작업을 수행합니다.
- JSON 파일을 읽고
- 그 내용을 기반으로 customerDF라는 DataFrame을 생성합니다
📌 중요
- 데이터 경로는 반드시 이전에 업로드한 위치와 정확히 일치해야 합니다.
- 경로가 다르면 코드가 실행되지 않습니다.
5. 원본 JSON 파일 내용 확인하기
DataFrame을 만들기 전에,
실제 JSON 파일 안에 어떤 데이터가 있는지 확인해 보겠습니다.
1 | dbutils.fs.head("/FileStore/tables/Databricks/Certified/Associate/Developer/Data/customer.json") |
이 명령은 다음과 같은 역할을 합니다.
- JSON 파일의 앞부분을 출력
- 데이터 구조를 빠르게 확인하는 데 매우 유용
6. DataFrame 데이터 확인하기
이제 생성된 DataFrame을 직접 확인해 보겠습니다.
Databricks 환경에서는 display() 함수를 사용할 수 있습니다.
1 | display(customerDF) |
출력 결과를 보면 다음과 같은 컬럼을 확인할 수 있습니다.
- address_id
- bad
- country
- birth_date
- demographics
📌 demographics 컬럼은 struct 타입의 복합 컬럼입니다.
DataFrame 스키마(Schema) 확인
컬럼 이름과 데이터 타입을 확인하려면 다음 명령을 사용합니다.
1 | customerDF.printSchema() |
이 결과에서 확인할 수 있는 정보는 다음과 같습니다.
- 컬럼 이름
- 데이터 타입
- nullable 여부 (null 가능 여부)
📌 nullable 정보는
- 데이터 최적화를 위한 힌트이며
- 실제로 null 값이 반드시 없다는 의미는 아닙니다
7. DataFrame과 Spark 아키텍처 연결해서 이해하기
이제 DataFrame이 어디에, 어떻게 저장되는지를 이해해 보겠습니다.
Apache Spark 전체 구조 요약
Cluster Manager
- 클러스터 전체 관리
Node Manager
- 각 워커 노드 관리
Spark Driver
- 작업 계획 및 제어
Spark Executors
- 실제 연산 수행
- 데이터를 메모리에 보관
Executor와 메모리
각 Executor는 다음과 같은 리소스를 할당받습니다.
- 일정 개수의 CPU Core
- 일정 크기의 Memory(RAM)
Spark가 데이터를 읽으면:
- 데이터는 Executor의 메모리에 저장되고
- 이 데이터는 DataFrame 형태로 관리됩니다
8. Partition 개념 이해하기
Apache Spark는 데이터를 자동으로 나눕니다.
이 나뉜 데이터 조각을 Partition이라고 합니다.
- 하나의 Partition = 여러 Row의 묶음
- 하나의 Partition은 하나의 머신(Executor)에 위치
👉 DataFrame의 Partition 구조는
👉 데이터가 클러스터에 어떻게 분산 저장되는지를 결정합니다.
9. DataFrame이란 무엇인가?
DataFrame은 다음과 같은 특징을 가집니다.
- 분산된 데이터 컬렉션
- 구조화된 형태 (Schema 존재)
- 관계형 데이터베이스의 테이블과 매우 유사
DataFrame의 특징
- 행(Row)과 열(Column)로 구성
- 모든 Row는 동일한 컬럼 구조를 가짐
- 각 컬럼은 다음 정보를 가짐
- 이름(Name)
- 데이터 타입(Data Type)
- nullable 정보
이 컬럼 정의 전체를 Schema라고 부릅니다.
10. DataFrame Schema의 중요성
Schema는 매우 중요합니다.
이유는 다음과 같습니다.
- 문자열을 숫자로 잘못 처리하는 오류 방지
- 연산 최적화
- 안정적인 데이터 처리
Schema를 확인하려면 다음 메서드를 사용합니다.
printSchema()
Apache Spark는:
- DataFrame이 어떤 Partition에 있는지
- 데이터가 어디에 분산되어 있는지
를 내부적으로 모두 관리해 주기 때문에
👉 개발자는 분산 처리에 대해 직접 신경 쓰지 않아도 됩니다.
11. 정리 및 다음 강의 예고
이번 강의에서 배운 내용은 다음과 같습니다.
- ✅ 데이터셋 및 클러스터 확인
- ✅ Spark Session 이해
- ✅ JSON 파일로 DataFrame 생성
- ✅ DataFrame 구조와 Schema 이해
- ✅ Partition 개념 이해
다음 강의에서는:
- DataFrame Schema를 직접 정의하는 방법
- 데이터 타입을 명확히 지정하는 방법
을 살펴보겠습니다.
