Post

Temp View

1. 개요

  • SQL의 View 처럼 Spark에서도 View를 지원한다.
  • Spark 2.1.0 부터는 Global Temporary View 지원한다.

2. Temp View

  • Spark의 Temporary View는 Session-Scope이다.
  • 즉, SparkSession이 닫히기 전까지 살아있는 View이다.
1
2
3
4
5
6
7
df = spark.sql(query).cache()
print df.count()
df.CreateOrReplaceTempView("TempView")
df.dropTempView("TempView")
df.unpersist()

  • 설명
    • 첫째 줄은 Spark은 Lazy evaluation이기 때문에 아직 실행 되기 이전.
    • 이후 두 번째 줄에서 count() 함수를 실행하면 생성되며, TempView라는 이름으로 메모리에 두고 사용 가능.
    • 다 사용한 다음에는 unpersist 함수로 할당된 메모리를 해제

3. Global Temp View

  • Global Temporary View 예제
1
2
3
CREATE GLOBAL TEMPORARY VIEW temp_view AS SELECT a, b FROM tbl
SELECT * FROM global_temp.temp_view
DROP VIEW global_temp.temp_view
  • 이 View는 말 그대로 전역적인 상태로 남기 위해 시스템의 임시 데이터베이스로 연결된다. 그래서 접근할 때, global_temp라는 스키마나 DB로 접근한다.

  • 결론부터 말하자면 Global Temporary View는 모든 세션에서 공유 가능하며, Spark 어플리케이션이 종료되기 전까지 살아있게 된다.

  • 참고 : https://spark.apache.org/docs/2.1.1/api/java/org/apache/spark/sql/catalog/Catalog.html
  • 참고2 : https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#global-temporary-view
This post is licensed under CC BY 4.0 by the author.