SparkSQL之Catelog体系
按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念。在关系数据库中,Catalog是一个宽泛的概念,通常可以理解为一个容器或数据库对象命名空间中的一个层次,主要用来解决命名冲突等问题。
在Spark SQL系统中,Catalog主要用于各种函数资源信息和元数据信息(数据库、数据表、数据视图、数据分区与函数等)的统一管理。Spark SQL的Catalog体系涉及多个方面,不同层次所对应的关系如下图所示。

具体来讲,Spark SQL中的Catalog体系实现以SessionCatalog为主体,通过SparkSession(Spark程序入口)提供给外部调用。一般一个SparkSession对应一个SessionCatalog。本质上,SessionCatalog起到了一个代理的作用,对底层的元数据信息、临时表信息、视图信息和函数信息进行了封装。如上图所示,SessionCatalog的构造参数包括6部分,除传入Spark SQL和Hadoop配置信息的CatalystConf与Configuration外,还涉及以下4个方面的内容。
- GlobalTempViewManager(全局的临时视图管理):对应DataFrame中常用的createGlobal-TempView方法,进行跨Session的视图管理。GlobalTempViewManager是一个线程安全的类,提供了对全局视图的原子操作,包括创建、更新、删除和重命名等。在GlobalTempViewManager内部实现中,主要功能依赖一个mutable类型的HashMap来对视图名和数据源进行映射,其中的key是视图名的字符串,value是视图所对应的LogicalPlan(一般在创建该视图时生成)。需要注意的是,GlobalTempViewManager对视图名是大小写敏感的。
- FunctionResourceLoader(函数资源加载器):在Spark SQL中除内置实现的各种函数外,还支持用户自定义的函数和Hive中的各种函数。这些函数往往通过Jar包或文件类型提供,FunctionResourceLoader主要就是用来加载这两种类型的资源以提供函数的调用。需要注意的是,对于Archive类型的资源,目前仅支持在YARN模式下以spark-submit方式提交时进行加载。
- FunctionRegistry(函数注册接口):用来实现对函数的注册(Register)、查找(Lookup)和删除(Drop)等功能。一般来讲,FunctionRegistry的具体实现需要是线程安全的,以支持并发访问。在Spark SQL中默认实现是SimpleFunctionRegistry,其中采用Map数据结构注册了各种内置的函数。
- ExternalCatalog(外部系统Catalog):用来管理数据库(Databases)、数据表(Tables)、数据分区(Partitions)和函数(Functions)的接口。顾名思义,其目标是与外部系统交互,并做到上述内容的非临时性存储,同样需要满足线程安全以支持并发访问。如上图所示,ExternalCatalog是一个抽象类,定义了上述4个方面的功能。在Spark SQL中,具体实现有InMemoryCatalog和HiveExternalCatalog两种。前者将上述信息存储在内存中,一般用于测试或比较简单的SQL处理;后者利用Hive原数据库来实现持久化的管理,在生产环境中广泛应用。
总体来看,SessionCatalog是用于管理上述一切基本信息的入口。除上述的构造参数外,其内部还包括一个mutable类型的HashMap用来管理临时表信息,以及currentDb成员变量用来指代当前操作所对应的数据库名称。SessionCatalog在Spark SQL的整个流程中起着重要的作用,在后续逻辑算子阶段和物理算子阶段都会用到。
相关文章:
SparkSQL之Catelog体系
按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念。在关系数据库中,Catalog是一个宽泛的概念,通常可以理解为一个容器或数据库对象命名空间中的一个层次,主要用来解决命名冲突等问题。 在Spark SQL系统中,…...
【操作系统面试题(32道)与面试Linux命令大全】
文章目录 操作系统面试题引论1.什么是操作系统?2.操作系统主要有哪些功能? 操作系统结构3.什么是内核?4.什么是用户态和内核态?5.用户态和内核态是如何切换的? 进程和线程6.并行和并发有什么区别?7.什么是进…...
Qt TCP/IP网络通信
TCP服务器部分: 创建TCP服务器: #include <QTcpServer> QTcpServer *tcpServer; //TCP服务器 tcpServernew QTcpServer(this);TCP服务器来连接的信号与槽: connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection()…...
全域旅游“一机游”智慧旅游平台解决方案:PPT全文48页,附下载
关键词:智慧文旅解决方案,智慧旅游解决方案,智慧旅游平台建设方案,智慧文旅综合运营平台,智慧文旅建设方案 一、智慧文旅一机游定义 智慧文旅一机游是一种新型的旅游方式,它通过智能化的设备和系统&#…...
Ubuntu 22.04 (WSL2) 安装 libssl1.1
废话不多说!!! 步骤一: echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list 步骤二: sudo apt-get update 步骤三:…...
Unity 跑酷游戏全部脚本(完结)
脚本1 触发器脚本 这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColliidisonTrigger : MonoBehaviour { //触发检测 …...
凯美瑞 vs 太空船:Web3 游戏生长的两条路径
撰文:Teng Yan(0xPrismatic),Delphi Digital 研究员 编译:TinTinLand 来源:https://0xprismatic.substack.com/p/my-short-web3-gaming-thesis 经常有人问我关于 Web3 游戏的看法,所以我想以这…...
(一)正点原子I.MX6ULL kernel6.1移植
一、概述 学完了正点原子的I.MX6ULL移植,正点原子的教程是基于Ubuntu18,使用的是4.1.15的内核,很多年前的了。NXP官方也发布了新的6.1的内核,以及2022.04的uboot。 本文分享一下基于Ubuntu22.04(6.2.0-36-generic&…...
计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密,数据恢复
企业的计算机服务器为企业的数据存储提供了极大便利,也让企业的生产运行效率得到了极大提升,但是网络数据安全威胁随着技术的不断发展也不断增加。近期,云天数据恢复中心接到很多企业的求助,企业的计算机服务器遭到了mallox勒索病…...
CSS3实现动态旋转加载样式
要使用 CSS3 创建一个动态旋转加载样式,可以使用 CSS 动画和旋转变换。下面是一个简单的示例: HTML: <div class"loader"></div> CSS: .loader {width: 50px;height: 50px;border: 4px solid #3498db;b…...
【LeetCode刷题-二分查找】--658.找到K个最接近的元素
658.找到K个最接近的元素 方法一:二分查找双指针 假设数组长度为n,数组arr已经按照升序排序,可以将数组arr分为两部分,前一部分所有元素[0,left]都小于x,后一部分[right,n-1]都大于等于x,left与right都可以…...
新方向!文心一言X具身智能,用LLM大模型驱动智能小车
具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合,通过智能体与环境的交互,来感知和理解世界,最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型,低成本入门“具身智能”࿰…...
mysql.sock找不到怎么解决?
当我们连接mysql时找不到mysql.sock的时候会出现下列情况: cant connect to mysql server through socket /tmp/mysql.sock 解决方法: (1)找到mysql.sock 使用 find / -name mysql.sock 进行寻找。 如果找不到,那…...
微信小程序刷新当前页面(亲测有效)
有个小功能点,需要刷新当前页面,搜索了很多地方,发现很多搜索的结果其实并不准确。 有的调用的是this.onLoad方法,有的是调用的是this.onReady方法。其实都不能满足我的要求,其实我就只是想刷新下当前页面,…...
通过拉普拉斯特征映射降维
拉普拉斯特征映射(Laplacian Eigenmaps),主要包括拉普拉斯特征映射(Laplacian Eigenmaps)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 1 …...
【信息安全原理】——传输层安全(学习笔记)
📖 前言:为保证网络应用,特别是应用广泛的Web应用数据传输的安全性(机密性、完整性和真实性),可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议,包括&…...
GBDT减少模型偏差、随机森林减小模型方差
1、Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。 Adaboost…...
使用IDEA工具处理git合并后的冲突的细节
使用 IDEA 处理合并(merge) 使用IDEA处理git合并如果遇到冲突,对冲突文件的不冲突部分需要处理吗?会自动将双方不冲突的部分合并吗? 比如如下,使用 IDEA 合并 branch1 到 branch2 分支,出现了冲突,如下图…...
快速下载ChatGLM系列模型
1. 说明与步骤 在无法访问huggingface的网络环境下(或者是网速不够好时),(目前)还可以使用参考1中清华云盘的链接来下载,在linux下可以直接用如下wget命令来下载最耗时的模型部分。注意还需要把模型的.py等…...
【数据结构】顺序表 | 详细讲解
在计算机中主要有两种基本的存储结构用于存放线性表:顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的…...
大模型上线即崩溃?——某千亿参数模型因未执行混沌验证,上线2小时触发37次OOM-Kill(完整复盘报告)
第一章:大模型上线即崩溃?——某千亿参数模型因未执行混沌验证,上线2小时触发37次OOM-Kill(完整复盘报告) 2026奇点智能技术大会(https://ml-summit.org) 该模型部署于Kubernetes集群,采用4A100 80GB GPU节…...
从Kaggle比赛到公司项目:我是如何用Baseline快速启动,靠Benchmark评估进度,并追踪SOTA保持竞争力的
从Kaggle实战到工业落地:Baseline快速验证、Benchmark科学对标与SOTA持续进化的方法论 去年接手电商评论情感分析项目时,业务方只丢来一句"希望准确率至少比现有系统高15%"。面对数百万条未标注的评论数据,我用了72小时就给出了可行…...
Qwen3-4B-Instruct-2507保姆级教程:tokenizer模板严格对齐官方
Qwen3-4B-Instruct-2507保姆级教程:tokenizer模板严格对齐官方 想快速体验一个响应快、对话流畅、还能写代码的纯文本AI助手吗?今天要介绍的这个项目,就是基于阿里通义千问最新发布的Qwen3-4B-Instruct-2507模型打造的。它去掉了所有跟图像处…...
AI Agent 跑完任务怎么通知你?我写了个微信推送服务渍
1、普通的insert into 如果(主键/唯一建)存在,则会报错 新需求:就算冲突也不报错,用其他处理逻辑 回到顶部 2、基本语法(INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)) 语…...
3分钟掌握FanControl:Windows风扇智能控制完全指南
3分钟掌握FanControl:Windows风扇智能控制完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...
合宙Air724UG Cat.1模块音频接口实战解析--从硬件设计到软件调试
1. 合宙Air724UG音频接口硬件设计详解 第一次拿到合宙Air724UG模块时,最让我头疼的就是音频接口部分的设计。这个Cat.1模块内置了完整的语音处理功能,但要把这些功能用好,硬件设计上有很多需要注意的细节。我花了整整两周时间调试,…...
用WeChatMsg永久保存微信聊天记录:你的数字记忆守护者
用WeChatMsg永久保存微信聊天记录:你的数字记忆守护者 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...
FRCRN常见错误代码排查手册:从403 Forbidden到CUDA错误
FRCRN常见错误代码排查手册:从403 Forbidden到CUDA错误 部署和使用FRCRN进行语音降噪时,遇到各种报错是常有的事。这些错误信息往往让人一头雾水,从网络权限的“403 Forbidden”到让人头疼的CUDA问题,每一个都可能让你卡上半天。…...
Qwen3-VL-8B实战案例:为视障人士生成图片描述,简单几步实现
Qwen3-VL-8B实战案例:为视障人士生成图片描述,简单几步实现 1. 项目背景与价值 想象一下,当你打开社交媒体,看到朋友分享了一张精美的照片,却无法通过视觉感知它的内容——这是视障人士每天面临的现实挑战。传统的图…...
cv_unet_image-colorization色彩心理学应用:不同历史时期配色风格AI学习案例
cv_unet_image-colorization色彩心理学应用:不同历史时期配色风格AI学习案例 1. 项目概述 今天要介绍的是一个特别有意思的工具——基于AI的黑白照片上色神器。这个工具能让那些尘封已久的老照片重新焕发光彩,就像给黑白电影加上颜色一样神奇。 这个工…...
