Spark Session
- Spark 프로그램의 시작은 Spark Session의 생성
- 프로그램마다 하나를 만들어 Spark Cluster와 통신 -> Singleton 객체
- Spark 2.0에서 처음 소개
- Spark Session을 통해 Spark가 제공해주는 다양한 기능 사용
- DataFrame, SQL, Streaming, ML API 모두 해당 객체로 통신
- config 메소드를 이용해 다양한 환경설정 가능
- 단, RDD와 관련된 작업을 할 때는 SparkSession 밑의 sparkContext 객체를 사용
- Spark Session API 문서
Spark 세션 생성 예제
from pyspark.sql import SparkSession
# SparkSession - Singleton
spark = SparkSession.builder\
.master("local[*]")\
.appName('PySpark init')\
.getOrCreate()
...
spark.stop()
Spark Session 환경 변수
- Spark Session 생성 시 다양한 환경 설정 가능
- 사용하는 Resource Manage에 따라 환경 변수가 달라짐
- 예시
- executor별 메모리: spark.executor.memory (기본값: 1g)
- executor별 CPU수: spark.executor.cores (YARN에서는 기본값 1)
- driver 메모리: spark.driver.memory (기본값: 1g)
- Shuffle후 Partition의 수: spark.sql.shuffle.partitions (기본값: 최대 200)
- 환경 설정 방법 -> 충돌 시 우선순위는 아래일수록 높다!
- 환경 변수 설정
- $SPARK_HOME/conf/spark_defaults.conf 수정
- SparkSession 생성 시 지정 -> config() 메소드 사용
- spark-submit 명령의 커맨드라인 파라미터
Spark Session 플로우
- Spark Session 생성
- 입력 데이터 로딩
- 데이터 조작 작업
- DataFrame API or Spark SQL 사용
- 원하는 결과가 나올 때까지 새로운 DataFrame 생성
- 최종 결과 저장
'데이터 > Spark' 카테고리의 다른 글
[Spark] 6. Spark Execution Plan (0) | 2024.12.03 |
---|---|
[Spark] 5. File Format (0) | 2024.12.03 |
[Spark] 4. Database & Table (2) | 2024.12.03 |
[Spark] 3. Spark SQL (0) | 2024.12.02 |
[Spark] 1. Spark? (1) | 2024.11.28 |