터칭 데이터

Spark 프로그램 구조 본문

하둡과 Spark

Spark 프로그램 구조

터칭 데이터 2024. 1. 16. 19:27

 

 

 

Contents

 

1. Spark 데이터 처리

 

2. Spark 데이터 구조: RDD, DataFrame, Dataset

 

3. 프로그램 구조

 

4. 개발/실습 환경 소개

 

5. Spark DataFrame 실습

 

 

 

 

 

 

 

 

 

프로그램 구조


Spark Session 생성과 설정에 대해서 알아보고 Spark 프로그램의 일반적인 구조에 대해 알아보자

 

 

 

 

 

 

 

 

 

 

Spark Session 생성

 

Spark 프로그램의 시작은 SparkSession을 만드는 것

프로그램마다 하나를 만들어 Spark Cluster와 통신: Singleton 객체
Spark 2.0에서 처음 소개됨

 

Spark Session을 통해 Spark이 제공해주는 다양한 기능을 사용

DataFrame, SQL, Streaming, ML API 모두 이 객체로 통신
config 메소드를 이용해 다양한 환경설정 가능
단 RDD와 관련된 작업을 할때는 SparkSession 밑의 sparkContext 객체를 사용

 

Spark Session API 문서

 

 

 

 

 

 

 

 

 

 

 

 

Spark 세션 생성 - PySpark 예제

 

싱글턴

 

 

 

 

 

 

 

pyspark.sql 제공 주요 기능

 

pyspark.sql.SparkSession

 

pyspark.sql.DataFrame

 

pyspark.sql.Column

 

pyspark.sql.Row

 

pyspark.sql.functions

 

pyspark.sql.types

 

pyspark.sql.Window

 

 

 

 

 

 

 

 

 

 

 

 

 

Spark Session 환경 변수

 

Spark Session을 만들 때 다양한 환경 설정이 가능

 

몇 가지 예

executor별 메모리: spark.executor.memory (기본값: 1g)
executor별 CPU수: spark.executor.cores (YARN에서는 기본값 1)
driver 메모리: spark.driver.memory (기본값: 1g)
Shuffle후 Partition의 수: spark.sql.shuffle.partitions (기본값: 최대 200)

 

가능한 모든 환경변수 옵션은 여기에서 찾을 수 있음

사용하는 Resource Manager에 따라 환경변수가 많이 달라짐

 

 

 

 

 

 

 

 

 

 

 

 

 

Spark Session 환경 설정 방법 4가지

❖ 환경변수

❖ $SPARK_HOME/conf/spark_defaults.conf


❖ spark-submit 명령의 커맨드라인 파라미터
● 나중에 따로 설명


❖ SparkSession 만들때 지정
● SparkConf

 

 

 

 

 

 

 

 

 

 

 

 

Spark 세션 환경 설정 (1)

SparkSession 생성시 일일히 지정

 

from pyspark.sql import SparkSession
# SparkSession은 싱글턴
spark = SparkSession.builder\
 .master("local[*]")\
 .appName('PySpark Tutorial')\
 .config("spark.some.config.option1", "some-value") \
 .config("spark.some.config.option2", "some-value") \
 .getOrCreate()

 

이 시점의 Spark Configuration은 앞서 언급한 환경변수와 spark_defaults.conf와 spark-submit로 들어온 환경설정이 우선순위를 고려한 상태로 정리된 상태

 

그리고 위의 코드에서 .config("spark.some.config.option1", "some-value") \ 가 앞의 3가지 환경변수와 spark_defaults.conf와 spark-submit로 들어온 환경설정을 Overwrite한다고 생각하면 됩니다.

 

 

싱글턴

 

 

 

 

 

 

 

 

 

 

Spark 세션 환경 설정 (2)

SparkConf 객체에 환경 설정하고 SparkSession에 지정

from pyspark.sql import SparkSession
from pyspark import SparkConf

conf = SparkConf()
conf.set("spark.app.name", "PySpark Tutorial")
conf.set("spark.master", "local[*]")

# SparkSession은 싱글턴
spark = SparkSession.builder\
 .config(conf=conf) \
 .getOrCreate()

 

싱글턴

 

 

 

 

 

 

 

 

 

 

 

 

전체적인 플로우

 

Spark 세션(SparkSession)을 만들기

 

입력 데이터 로딩

 

데이터 조작 작업 (판다스와 아주 흡사)

DataFrame API나 Spark SQL을 사용
원하는 결과가 나올때까지 새로운 DataFrame을 생성

 

최종 결과 저장

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Spark Session이 지원하는 데이터 소스

 

spark.read(DataFrameReader)를 사용하여 데이터프레임으로 로드

 

DataFrame.write(DataFrameWriter)을 사용하여 데이터프레임을 저장

 

많이 사용되는 데이터 소스들


HDFS 파일
    - CSV, JSON, Parquet, ORC, Text, Avro
        - Parquet/ORC/Avro (Binary 파일들)에 대해서는 나중에 더 자세히 설명
    - Hive 테이블

        - Hive는 HDFS 위의 파일 형태로 존재

JDBC 관계형 데이터베이스

클라우드 기반 데이터 시스템

    - 데이터 웨어하우스: AWS Redshift, Big Query, Snowflake 등
스트리밍 시스템

    - Kinesis, Kafka 등

 

 

 

 

 

 

'하둡과 Spark' 카테고리의 다른 글

Local Standalone REP 데모 - 맥(Mac)  (0) 2024.01.16
개발환경소개 Colab 설정과 코딩 데모  (0) 2024.01.16
Spark 데이터 구조: RDD, DataFrame, Dataset  (0) 2024.01.16
Spark 데이터 처리  (0) 2024.01.16
Intro  (0) 2024.01.16