SparkSession이란

ack·2021년 6월 30일
0

Spark

목록 보기
4/6
post-thumbnail

SparkSession이란 무엇일까?

SparkSession은 스파크 응용 프로그램의 통합 진입점으로 스파크의 기능들과 구조들이 상호방식하는 방식을 제공합니다.

SparkSession은 Builder Pattern을 사용해서 생성할 수 있습니다.

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder
.appName("SparkSessionExample") 
.master("local[4]") 
.config("spark.sql.warehouse.dir", "target/spark-warehouse")
.enableHiveSupport()
.getOrCreate

SparkSession과 SparkContext

이 둘의 차이는 스파크 애플리케이션에서 사용되는 스파크의 버전에 있다.
스파크2.0 이전에는 SparkContext가 스파크 애플리케이션의 집합점이었고 모든 스파크 기능과 클러스터 설정과 스파크컨텍스트객체를 만드는 파라미터에 설정에 접근하기 위해서는 스파크 컨텍스트를 사용해야했다.

계층 구조

SparkContext

  • spark2.x 이전에 SparkContext가 모든 Spark 애플리케이션의 진입점
  • 모든 Spark기능에 엑세스 할 수 있는 메인 채널

SparkSession

  • spark2.x 이후에 모든 Spark 기능의 진입점
  • SparkContext에서 사용할 수 있는 기능은 모두 SparkSession에서 사용할 수 있음

사용자가 SparkContext의 사용을 원한다면 계속 사용할 수 있다.

Sample Code

###############
### Spark Conf
################

spark_conf = (SparkConf()
           .setAppName("Your App Name"))
           .set("spark.some.config.option", "some-value")

sc = SparkContext(conf = spark_conf)


###################
## Spark Session
###################
spark = (SparkSession
          .builder
          .appName("Your App Name")
          .config("spark.some.config.option", "some-value")
          .getOrCreate())  

sample examples of the Tuple - ("spark.some.config.option", "some-value") 
.
Examples of the Tuple are - 
('spark.executor.memory', '4g')
('spark.executor.cores', '4')
('spark.cores.max', '4')
('spark.driver.memory','4g')

SparkContext대신 SparkSession이 필요해진 이유

  • 다른 컨텍스트들을 모두 통합하기 위해서
  • 개발자가 다른 컨텍스트들을 생성하는 것에 대한 걱정을 피하기 위해서
  • 동일한 사용자가 같은 SparkContext를 사용하는 문제를 해결하기 위해서
    동일한 노트북 환경에 여러 사용자가 액세스하고 있고 동일한 SparkContext를 공유하는 격리 된 환경이 필요할때)
    Spark2.0 이전에는 사용자당 스파크 컨텍스트를 생성 -> 비용 발생(context당 jvm이 하나)

SparkSession의 multiple session

spark.newSession()을 사용해서 SparkContext를 공유하는 새 세션 생성
여러개의 세션에서 각각 동일한 이름의 다른 테이블 생성 가능

참고

Difference Between SparkSession , SparkContext , SQLContext & HiveContext
SparkContext
SparkSession
A tale of Spark Session and Spark Context

profile
아자 (*•̀ᴗ•́*)و

0개의 댓글