2017-11-27 8 views
0

나는 스파크를 배우고 있는데, 스파크의 카탈로그에 대해 혼란스러워했다. SparkSession.catalog와 SparkSession.sessionState.catalog의 차이점은 무엇입니까?

제가

/** 
    * Interface through which the user may create, drop, alter or query underlying 
    * databases, tables, functions etc. 
    * 
    * @since 2.0.0 
    */ 
    @transient lazy val catalog: Catalog = new CatalogImpl(self) 

아래와 같이 CatalogImpl의 인스턴스 SparkSession의 카탈로그를 발견하고 난 SessionCatalog의 인스턴스 SparkSession.sessionSate에서, 카탈로그가 있다는 것을 발견했다.

그들 사이의 차이점은 무엇입니까?

답변

1

무엇이 다른가요?

tl; dr 없음. 즉

private def sessionCatalog: SessionCatalog = sparkSession.sessionState.catalog 

, 내부적으로 sparkSession.sessionState.catalog를 사용 SparkSession.catalogcreatesCatalogImpl :


CatalogImplline는 이해에서 누락 된 부분입니다.

+0

SparkSession.catalog 및 SparkSession.sessionState.catalog가 여러 곳에서 동시에 참조 된 것으로 나타났습니다. 왜 Spark가 동일한 내용으로 두 개의 다른 카탈로그 변수를 생성합니까? – lulijun

+0

제 생각에이 API는 대부분 개발자 API이므로 다른 리팩터링의 일부 남은 부분이 나중의 정리를 위해 남아있을 수 있습니다. 나는 하나 또는 다른 하나에 대한 커밋 로그가 그 이유를 밝혀야한다고 확신한다. –