SparkSession
모든 스파크 애플리케이션은 가장 먼저 SparkSession을 생성
기존 코드 : new SparkContext 패턴을 사용 (과거 SparkContext, SQLContext 를 직접 생성)
최신 코드 : SparkSession의 빌더 메서드를 사용해 생성할것을 추천
SparkSession 클래스는 스파크2.x 버전 에서 사용이 가능하다
new SparkContext 에서 보다 안전하게 생성할 수 있다. 다수의 라이브러리가 세션을 생성하려는 상황에서 컨텍스트 충돌을 방지 할 수 있다.
예제
val spark = SparkSession.builder
.appName("My Spark Application") // optional and will be autogenerated if not specified
.master("local[*]") // only for demo and testing purposes, use spark-submit instead
.enableHiveSupport() // self-explanatory, isn't it?
.config("spark.sql.warehouse.dir", "target/spark-warehouse")
.config("spark.som.config.option","some-value")
.getOrCreate()
SparkSession, SQLContext, HiveContext
과거 버전의 스파크에서는 SQLContext와 HiveContext를 사용해 DataFrame과 스파크 SQL을 다룰수 있었음.
과거 SparkContext는 스파크의 핵심 추상화 개념을 다루는데 중점을 두고 , SQLContext는 스파크의 핵심 추상화 개념을 다루는데 중점을 둠
Spark2.x 이후 부터는 두 콘텍스트를 SparkSession으로 단일화함
SparkContext, SQLContext는 존재하지만 SparkSession을 통하여 접근이 가능하다.
멀티 세션
newSession
SparkContext를 공유하고 session 만 달라지는 방법, 개별의 session 마다 동일한 이름의 테이블 생성 가능.
동일한 jvm에 여러개의 스파크 컨텍스트를 갖는것은 권장되지 않으며 더 불안하고 하나의 스파크 컨텍스트가 충돌하면 다른 스파크에 영향을 줄수 있다.
newSession으로 만들어진 세션중 하나라도 stop/close 를 하게 되면 동일한 SparkContext를 사용하기 때문에 종료가 된다.
sparkSession.newSession();
참고
Spark 완벽 가이드(도서)
Spark -newSession (https://medium.com/@achilleus/spark-session-10d0d66d1d24)
SparkSession - The Entry Point to Spark SQL (https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-SparkSession.html)
'BackEnd > Spark' 카테고리의 다른 글
java.io.InvalidClassException: org.apache.spark.rdd.RDD (0) | 2020.02.18 |
---|---|
Spark History Server 실행 오류 시 (0) | 2020.02.10 |
RDD 영속화(캐싱) (0) | 2019.09.02 |
Spark BroadCast (0) | 2019.08.28 |
SPARK 에서의 기본 행동(action) 연산자 및 변환(transformation)연산자(2) (0) | 2018.06.18 |