본문 바로가기
-----ETC2-----/고급 프로그래밍 기술

[고급 프로그래밍] Week 7: Apache Spark 개요 및 설치, RDD와 DataFrame 기본 개념

by cogito21_python 2024. 6. 2.
반응형

Day 1: Apache Spark 개요

  • 강의 내용:
    • Apache Spark의 개념
      • Apache Spark란 무엇인가?
      • Spark의 주요 특징
      • Spark의 사용 사례
    • Spark의 아키텍처
      • Spark Core
      • Spark SQL
      • Spark Streaming
      • MLlib (Machine Learning Library)
      • GraphX
    • Spark의 장점
      • 빠른 처리 속도
      • 사용의 편리성
      • 유연한 API
  • 실습:
    • Apache Spark 개요와 아키텍처 설명
### Apache Spark 개요
1. Apache Spark란?
   - 분산 데이터 처리 프레임워크
   - 대규모 데이터 분석 및 처리
   - 다양한 언어 지원 (Python, Java, Scala 등)

2. Spark 아키텍처
   - Spark Core: 기본 컴퓨팅 엔진
   - Spark SQL: 구조화된 데이터 처리
   - Spark Streaming: 실시간 데이터 스트리밍
   - MLlib: 기계 학습 라이브러리
   - GraphX: 그래프 처리

3. Spark의 장점
   - 빠른 처리 속도
   - 사용의 편리성
   - 유연한 API

 

Day 2: Apache Spark 설치

  • 강의 내용:
    • Apache Spark 설치 준비
      • JDK 설치
      • Spark 다운로드 및 설치
    • Spark 설치 방법
      • 로컬 모드 설치
      • 클러스터 모드 설치
    • Spark 환경 설정
      • 환경 변수 설정
      • Spark 셸 실행
  • 실습:
    • Apache Spark 설치 및 환경 설정
### Apache Spark 설치 가이드
1. JDK 설치
   - Java Development Kit 설치
   - 환경 변수 설정 (JAVA_HOME)

2. Spark 다운로드 및 설치
   - https://spark.apache.org/downloads.html 에서 다운로드
   - 압축 해제 후 설치 디렉토리로 이동

3. 환경 변수 설정
   - SPARK_HOME 설정
   - PATH에 SPARK_HOME/bin 추가

4. Spark 셸 실행
   - 로컬 모드에서 Spark 셸 실행
   - `$SPARK_HOME/bin/spark-shell`

 

Day 3: RDD (Resilient Distributed Dataset) 기본 개념

  • 강의 내용:
    • RDD의 개념
      • RDD란 무엇인가?
      • RDD의 특징
      • RDD의 장점
    • RDD의 생성과 변환
      • RDD 생성 방법 (파일, 컬렉션)
      • RDD 변환 연산 (map, filter, reduceByKey 등)
    • RDD의 액션
      • RDD 액션 연산 (collect, count, take 등)
  • 실습:
    • RDD 생성 및 변환 예제
from pyspark import SparkConf, SparkContext

conf = SparkConf().setAppName("RDDExample").setMaster("local")
sc = SparkContext(conf=conf)

# RDD 생성
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)

# RDD 변환
rdd_map = rdd.map(lambda x: x * 2)
rdd_filter = rdd_map.filter(lambda x: x > 5)

# RDD 액션
result = rdd_filter.collect()
print(result)

 

Day 4: DataFrame 기본 개념

  • 강의 내용:
    • DataFrame의 개념
      • DataFrame이란 무엇인가?
      • DataFrame의 특징
      • DataFrame의 장점
    • DataFrame의 생성과 변환
      • DataFrame 생성 방법 (RDD, CSV 파일, JSON 파일 등)
      • DataFrame 변환 연산 (select, filter, groupBy 등)
    • DataFrame의 액션
      • DataFrame 액션 연산 (show, count, collect 등)
  • 실습:
    • DataFrame 생성 및 변환 예제
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("DataFrameExample").getOrCreate()

# DataFrame 생성
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)

# DataFrame 변환
df_filtered = df.filter(df.Age > 25)
df_selected = df_filtered.select("Name")

# DataFrame 액션
df_selected.show()

 

Day 5: RDD와 DataFrame 비교

  • 강의 내용:
    • RDD와 DataFrame의 차이점
      • API 차이점
      • 성능 차이점
    • RDD와 DataFrame의 장단점
      • RDD의 장단점
      • DataFrame의 장단점
    • RDD와 DataFrame의 사용 사례
      • RDD 사용 사례
      • DataFrame 사용 사례
  • 실습:
    • RDD와 DataFrame의 성능 비교 예제
from time import time

# RDD 성능 측정
rdd_start_time = time()
rdd_result = rdd.map(lambda x: x * 2).filter(lambda x: x > 5).collect()
rdd_end_time = time()
print(f"RDD 결과: {rdd_result}, 시간: {rdd_end_time - rdd_start_time}")

# DataFrame 성능 측정
df_start_time = time()
df_result = df.withColumn("Age2", df.Age * 2).filter(df.Age2 > 5).collect()
df_end_time = time()
print(f"DataFrame 결과: {df_result}, 시간: {df_end_time - df_start_time}")

 

Day 6: 프로젝트 준비

  • 강의 내용:
    • 프로젝트 주제 선정 및 요구사항 분석
      • 프로젝트 주제 및 요구사항 확정
      • 프로젝트 설계 및 계획 수립
    • 프로젝트 구현 준비
      • 데이터 구조 및 알고리즘 설계
      • Spark 작업 관리 및 최적화 계획
  • 실습:
    • 프로젝트 주제 및 요구사항 분석
    • 프로젝트 설계 및 계획 수립
### 프로젝트 주제 예시
1. Spark를 사용한 대규모 데이터 분석 플랫폼 개발
2. 실시간 데이터 스트리밍 분석 도구 구축

### 프로젝트 요구사항 예시
1. Spark를 사용한 대규모 데이터 분석 플랫폼:
   - 대규모 데이터를 RDD 및 DataFrame으로 처리
   - 다양한 데이터 변환 및 분석
   - 분석 결과 저장 및 시각화

2. 실시간 데이터 스트리밍 분석 도구:
   - 실시간 데이터 스트리밍 수집 및 처리
   - 실시간 데이터 변환 및 분석
   - 분석 결과 저장 및 시각화

### 프로젝트 설계 및 계획 예시
1. 데이터 입력 모듈 구현
2. Spark 알고리즘 구현
3. 데이터 출력 및 성능 분석 모듈 구현

 

반응형