Spark SQL 源码分析(四):SessionCatalog

SessionCatalog 是底层元数据(基于内存和基于 Hive)的代理,同时也负责临时视图和函数的管理。

SessionCatalog 类图:

SessionCatalog

ExternalCatalog

ExternalCatalog 用于管理数据库、表、分区和函数,在 Spark SQL 中具体有两个实现:

  • InMemoryCatalog
  • HiveExternalCatalog

InMemoryCatalog

ExternalCatalog 基于内存(内部使用 scala.collection.mutable.HashMap)的实现,主要用于测试和探索。不建议用于生产环境。

HiveExternalCatalog

ExternalCatalog 基于 Hive(内部使用 org.apache.hadoop.hive.ql.metadata.Hive)的实现。

GlobalTempViewManager

GlobalTempViewManager 是线程安全的全局临时视图管理器,提供了对全局视图的原子操作,包括创建、更新和删除等。

内部由 scala.collection。mutable.HashMap[String, LogicalPlan] 实现。

FunctionResourceLoader

TODO

FunctionRegistry

提供了函数的注册、查找和删除等功能。

默认实现类 org.apache.spark.sql.catalyst.analysis.SimpleFunctionRegistry

基于 Spark 2.3.0 版本