当前位置: 首页 > news >正文

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个方面的内容。

  1. GlobalTempViewManager(全局的临时视图管理):对应DataFrame中常用的createGlobal-TempView方法,进行跨Session的视图管理。GlobalTempViewManager是一个线程安全的类,提供了对全局视图的原子操作,包括创建、更新、删除和重命名等。在GlobalTempViewManager内部实现中,主要功能依赖一个mutable类型的HashMap来对视图名和数据源进行映射,其中的key是视图名的字符串,value是视图所对应的LogicalPlan(一般在创建该视图时生成)。需要注意的是,GlobalTempViewManager对视图名是大小写敏感的。
  2. FunctionResourceLoader(函数资源加载器):在Spark SQL中除内置实现的各种函数外,还支持用户自定义的函数和Hive中的各种函数。这些函数往往通过Jar包或文件类型提供,FunctionResourceLoader主要就是用来加载这两种类型的资源以提供函数的调用。需要注意的是,对于Archive类型的资源,目前仅支持在YARN模式下以spark-submit方式提交时进行加载。
  3. FunctionRegistry(函数注册接口):用来实现对函数的注册(Register)、查找(Lookup)和删除(Drop)等功能。一般来讲,FunctionRegistry的具体实现需要是线程安全的,以支持并发访问。在Spark SQL中默认实现是SimpleFunctionRegistry,其中采用Map数据结构注册了各种内置的函数。
  4. 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服务器部分&#xff1a; 创建TCP服务器&#xff1a; #include <QTcpServer> QTcpServer *tcpServer; //TCP服务器 tcpServernew QTcpServer(this);TCP服务器来连接的信号与槽&#xff1a; connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection()…...

全域旅游“一机游”智慧旅游平台解决方案:PPT全文48页,附下载

关键词&#xff1a;智慧文旅解决方案&#xff0c;智慧旅游解决方案&#xff0c;智慧旅游平台建设方案&#xff0c;智慧文旅综合运营平台&#xff0c;智慧文旅建设方案 一、智慧文旅一机游定义 智慧文旅一机游是一种新型的旅游方式&#xff0c;它通过智能化的设备和系统&#…...

Ubuntu 22.04 (WSL2) 安装 libssl1.1

废话不多说&#xff01;&#xff01;&#xff01; 步骤一&#xff1a; echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list 步骤二&#xff1a; sudo apt-get update 步骤三&#xff1a…...

Unity 跑酷游戏全部脚本(完结)

脚本1 触发器脚本 这个脚本是主角身上的脚本&#xff0c;用于检测是否碰到其他触发器&#xff0c;并做出对应的行为 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColliidisonTrigger : MonoBehaviour { //触发检测 …...

凯美瑞 vs 太空船:Web3 游戏生长的两条路径

撰文&#xff1a;Teng Yan&#xff08;0xPrismatic&#xff09;&#xff0c;Delphi Digital 研究员 编译&#xff1a;TinTinLand 来源&#xff1a;https://0xprismatic.substack.com/p/my-short-web3-gaming-thesis 经常有人问我关于 Web3 游戏的看法&#xff0c;所以我想以这…...

(一)正点原子I.MX6ULL kernel6.1移植

一、概述 学完了正点原子的I.MX6ULL移植&#xff0c;正点原子的教程是基于Ubuntu18&#xff0c;使用的是4.1.15的内核&#xff0c;很多年前的了。NXP官方也发布了新的6.1的内核&#xff0c;以及2022.04的uboot。 本文分享一下基于Ubuntu22.04&#xff08;6.2.0-36-generic&…...

计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密,数据恢复

企业的计算机服务器为企业的数据存储提供了极大便利&#xff0c;也让企业的生产运行效率得到了极大提升&#xff0c;但是网络数据安全威胁随着技术的不断发展也不断增加。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了mallox勒索病…...

CSS3实现动态旋转加载样式

要使用 CSS3 创建一个动态旋转加载样式&#xff0c;可以使用 CSS 动画和旋转变换。下面是一个简单的示例&#xff1a; HTML&#xff1a; <div class"loader"></div> CSS&#xff1a; .loader {width: 50px;height: 50px;border: 4px solid #3498db;b…...

【LeetCode刷题-二分查找】--658.找到K个最接近的元素

658.找到K个最接近的元素 方法一&#xff1a;二分查找双指针 假设数组长度为n&#xff0c;数组arr已经按照升序排序&#xff0c;可以将数组arr分为两部分&#xff0c;前一部分所有元素[0,left]都小于x&#xff0c;后一部分[right,n-1]都大于等于x&#xff0c;left与right都可以…...

新方向!文心一言X具身智能,用LLM大模型驱动智能小车

具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合&#xff0c;通过智能体与环境的交互&#xff0c;来感知和理解世界&#xff0c;最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型&#xff0c;低成本入门“具身智能”&#xff0…...

mysql.sock找不到怎么解决?

当我们连接mysql时找不到mysql.sock的时候会出现下列情况&#xff1a; cant connect to mysql server through socket /tmp/mysql.sock 解决方法&#xff1a; &#xff08;1&#xff09;找到mysql.sock 使用 find / -name mysql.sock 进行寻找。 如果找不到&#xff0c;那…...

微信小程序刷新当前页面(亲测有效)

有个小功能点&#xff0c;需要刷新当前页面&#xff0c;搜索了很多地方&#xff0c;发现很多搜索的结果其实并不准确。 有的调用的是this.onLoad方法&#xff0c;有的是调用的是this.onReady方法。其实都不能满足我的要求&#xff0c;其实我就只是想刷新下当前页面&#xff0c;…...

通过拉普拉斯特征映射降维

拉普拉斯特征映射&#xff08;Laplacian Eigenmaps&#xff09;&#xff0c;主要包括拉普拉斯特征映射&#xff08;Laplacian Eigenmaps&#xff09;使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有一定的参考价值&#xff0c;需要的朋友可以参考一下。 1 …...

【信息安全原理】——传输层安全(学习笔记)

&#x1f4d6; 前言&#xff1a;为保证网络应用&#xff0c;特别是应用广泛的Web应用数据传输的安全性&#xff08;机密性、完整性和真实性&#xff09;&#xff0c;可以在多个网络层次上采取安全措施。本篇主要介绍传输层提供应用数据安全传输服务的协议&#xff0c;包括&…...

GBDT减少模型偏差、随机森林减小模型方差

1、Adaboost算法原理&#xff0c;优缺点&#xff1a; 理论上任何学习器都可以用于Adaboost.但一般来说&#xff0c;使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树&#xff0c;Adaboost分类用了CART分类树&#xff0c;而Adaboost回归用了CART回归树。 Adaboost…...

使用IDEA工具处理git合并后的冲突的细节

使用 IDEA 处理合并(merge) 使用IDEA处理git合并如果遇到冲突&#xff0c;对冲突文件的不冲突部分需要处理吗&#xff1f;会自动将双方不冲突的部分合并吗&#xff1f; 比如如下&#xff0c;使用 IDEA 合并 branch1 到 branch2 分支&#xff0c;出现了冲突&#xff0c;如下图…...

快速下载ChatGLM系列模型

1. 说明与步骤 在无法访问huggingface的网络环境下&#xff08;或者是网速不够好时&#xff09;&#xff0c;&#xff08;目前&#xff09;还可以使用参考1中清华云盘的链接来下载&#xff0c;在linux下可以直接用如下wget命令来下载最耗时的模型部分。注意还需要把模型的.py等…...

【数据结构】顺序表 | 详细讲解

在计算机中主要有两种基本的存储结构用于存放线性表&#xff1a;顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构&#xff0c;指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的&#xf…...

大模型上线即崩溃?——某千亿参数模型因未执行混沌验证,上线2小时触发37次OOM-Kill(完整复盘报告)

第一章&#xff1a;大模型上线即崩溃&#xff1f;——某千亿参数模型因未执行混沌验证&#xff0c;上线2小时触发37次OOM-Kill&#xff08;完整复盘报告&#xff09; 2026奇点智能技术大会(https://ml-summit.org) 该模型部署于Kubernetes集群&#xff0c;采用4A100 80GB GPU节…...

从Kaggle比赛到公司项目:我是如何用Baseline快速启动,靠Benchmark评估进度,并追踪SOTA保持竞争力的

从Kaggle实战到工业落地&#xff1a;Baseline快速验证、Benchmark科学对标与SOTA持续进化的方法论 去年接手电商评论情感分析项目时&#xff0c;业务方只丢来一句"希望准确率至少比现有系统高15%"。面对数百万条未标注的评论数据&#xff0c;我用了72小时就给出了可行…...

Qwen3-4B-Instruct-2507保姆级教程:tokenizer模板严格对齐官方

Qwen3-4B-Instruct-2507保姆级教程&#xff1a;tokenizer模板严格对齐官方 想快速体验一个响应快、对话流畅、还能写代码的纯文本AI助手吗&#xff1f;今天要介绍的这个项目&#xff0c;就是基于阿里通义千问最新发布的Qwen3-4B-Instruct-2507模型打造的。它去掉了所有跟图像处…...

AI Agent 跑完任务怎么通知你?我写了个微信推送服务渍

1、普通的insert into 如果&#xff08;主键/唯一建&#xff09;存在&#xff0c;则会报错 新需求&#xff1a;就算冲突也不报错&#xff0c;用其他处理逻辑 回到顶部 2、基本语法&#xff08;INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)&#xff09; 语…...

3分钟掌握FanControl:Windows风扇智能控制完全指南

3分钟掌握FanControl&#xff1a;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模块时&#xff0c;最让我头疼的就是音频接口部分的设计。这个Cat.1模块内置了完整的语音处理功能&#xff0c;但要把这些功能用好&#xff0c;硬件设计上有很多需要注意的细节。我花了整整两周时间调试&#xff0c…...

用WeChatMsg永久保存微信聊天记录:你的数字记忆守护者

用WeChatMsg永久保存微信聊天记录&#xff1a;你的数字记忆守护者 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

FRCRN常见错误代码排查手册:从403 Forbidden到CUDA错误

FRCRN常见错误代码排查手册&#xff1a;从403 Forbidden到CUDA错误 部署和使用FRCRN进行语音降噪时&#xff0c;遇到各种报错是常有的事。这些错误信息往往让人一头雾水&#xff0c;从网络权限的“403 Forbidden”到让人头疼的CUDA问题&#xff0c;每一个都可能让你卡上半天。…...

Qwen3-VL-8B实战案例:为视障人士生成图片描述,简单几步实现

Qwen3-VL-8B实战案例&#xff1a;为视障人士生成图片描述&#xff0c;简单几步实现 1. 项目背景与价值 想象一下&#xff0c;当你打开社交媒体&#xff0c;看到朋友分享了一张精美的照片&#xff0c;却无法通过视觉感知它的内容——这是视障人士每天面临的现实挑战。传统的图…...

cv_unet_image-colorization色彩心理学应用:不同历史时期配色风格AI学习案例

cv_unet_image-colorization色彩心理学应用&#xff1a;不同历史时期配色风格AI学习案例 1. 项目概述 今天要介绍的是一个特别有意思的工具——基于AI的黑白照片上色神器。这个工具能让那些尘封已久的老照片重新焕发光彩&#xff0c;就像给黑白电影加上颜色一样神奇。 这个工…...