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
이 둘의 차이는 스파크 애플리케이션에서 사용되는 스파크의 버전에 있다.
스파크2.0 이전에는 SparkContext가 스파크 애플리케이션의 집합점이었고 모든 스파크 기능과 클러스터 설정과 스파크컨텍스트객체를 만드는 파라미터에 설정에 접근하기 위해서는 스파크 컨텍스트를 사용해야했다.
계층 구조
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')
spark.newSession()을 사용해서 SparkContext를 공유하는 새 세션 생성
여러개의 세션에서 각각 동일한 이름의 다른 테이블 생성 가능
Difference Between SparkSession , SparkContext , SQLContext & HiveContext
SparkContext
SparkSession
A tale of Spark Session and Spark Context