터칭 데이터
Spark 프로그램 구조 본문
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 |