基于版本:Spark 2.2.0
把一些概念搞清楚,Spark轮廓就清晰了。
什么是Catalog
,中文翻译目录
,那啥叫目录呢?下面是百度百科的解释:
`目录,是指书籍正文前所载的目次,是揭示和报道图书的工具。目录是记录图书的书名、著者、出版与收藏等情况,按照一定的次序编排而成,为反映馆藏、指导阅读、检索图书的工具。
简单说,目录是检索工具,那么Catalog
就是Spark的检索工具。
我们从它实现的主要功能入手看一下:
- 获取SparkSession可见的数据库、表和函数(不可见就抛出异常);
- 给定数据库名、表名和函数名,提供get函数获取这些实体的信息;
- 列举方法,包括列举可见的数据库,数据库中的表和函数;
- 判断数据库、表或者函数是否存在;
- 缓存/去缓存表数据、刷新数据库、表的内存meta信息;
- 创建外部表(createExternalTable)。
从上面实现的功能看,Catalog
其实是Spark了解session级别可见实体(数据库、表和函数)的一个入口,在它的具体实现CatalogImpl
中还包括了创建一个新数据库、表和函数的功能。
总结下就是:Catalog
围绕数据库、表和函数三种实体,提供创建、检索、缓存数据和删除的功能。