Spark Sql之Catalog

Posted 大葱拌豆腐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark Sql之Catalog相关的知识,希望对你有一定的参考价值。

基于版本:Spark 2.2.0
把一些概念搞清楚,Spark轮廓就清晰了。

什么是Catalog,中文翻译目录,那啥叫目录呢?下面是百度百科的解释:
`目录,是指书籍正文前所载的目次,是揭示和报道图书的工具。目录是记录图书的书名、著者、出版与收藏等情况,按照一定的次序编排而成,为反映馆藏、指导阅读、检索图书的工具。

简单说,目录是检索工具,那么Catalog就是Spark的检索工具。

我们从它实现的主要功能入手看一下:

  1. 获取SparkSession可见的数据库、表和函数(不可见就抛出异常);
  2. 给定数据库名、表名和函数名,提供get函数获取这些实体的信息;
  3. 列举方法,包括列举可见的数据库,数据库中的表和函数;
  4. 判断数据库、表或者函数是否存在;
  5. 缓存/去缓存表数据、刷新数据库、表的内存meta信息;
  6. 创建外部表(createExternalTable)。

从上面实现的功能看,Catalog其实是Spark了解session级别可见实体(数据库、表和函数)的一个入口,在它的具体实现CatalogImpl中还包括了创建一个新数据库、表和函数的功能。

总结下就是:Catalog围绕数据库、表和函数三种实体,提供创建、检索、缓存数据和删除的功能。

以上是关于Spark Sql之Catalog的主要内容,如果未能解决你的问题,请参考以下文章

spark2+的sql 性能调优

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

Spark SQL - org.apache.spark.sql.AnalysisException

S3 中 spark.catalog.refreshTable(tablename) 的使用

Spark细节汇总

Spark SQL之External DataSource外部数据源源代码分析