新闻详情

新闻详情

首页 / 资讯中心 / 详情

Apache Spark SQL 语法精解:SHOW TABLES 命令的完整使用指南

发布时间:2026/9/19 21:16:46来源:尧图网络
Apache Spark SQL 语法精解:SHOW TABLES 命令的完整使用指南
Apache Spark SQL 语法精解SHOW TABLES 命令的完整使用指南【免费下载链接】sparkApache Spark - A unified analytics engine for large-scale data processing项目地址: https://gitcode.com/gh_mirrors/sp/spark导读SHOW TABLES是 Apache Spark SQL 中最常用的元数据查询命令之一用于列出指定数据库Database下的全部表并支持通过正则模式过滤。本文以当前仓库官方文档 docs/sql-ref-syntax-aux-show-tables.md 为骨架结合仓库中 SQL 解析、命令执行与测试代码系统讲解该命令的语法、参数规则、输出格式与底层实现原理。读完本文你将掌握SHOW TABLES的完整用法能够自如地按数据库、按模式含通配符与多模式列出表清单并理解它如何区分永久表与临时视图。命令功能概述SHOW TABLES语句返回指定数据库中的所有表。核心语义如下若指定了数据库则返回该数据库下的表若未指定数据库则返回当前数据库current database下的表输出结果可选的通过一个匹配模式matching pattern进行过滤输出结果同时包含表与视图isTemporary列用于标识临时视图temporary view。该语句的官方定义位于 ShowTablesCommand 的注释中A command for users to get tables in the given database. If a databaseName is not given, the current database will be used.与本文档描述完全一致。语法SHOW TABLES [ { FROM | IN } database_name ] [ LIKE regex_pattern ]语法要点{ FROM | IN } database_name二者等价均可指定数据库名称LIKE regex_pattern可选用于按正则表达式模式过滤输出所有子句均可省略SHOW TABLES单独使用即列出当前数据库的全部表。参数详解{ FROM | IN } database_name指定要列出表的数据库名称。FROM与IN在语法上完全等价仓库中的 ANTLR 语法规则可佐证SHOW TABLES ((FROM | IN) identifierReference)? (LIKE? patternstringLit)? (AS JSON)?见 SqlBaseParser.g4。当省略该参数时命令使用当前数据库这在 ShowTablesCommand.run 中有明确实现val db databaseName.getOrElse(catalog.getCurrentDatabase)regex_pattern指定用于过滤表的正则表达式模式。官方文档明确约定以下三条规则务必牢记除*和|两个字符外模式按照正则表达式的方式工作*单独出现时匹配 0 个或多个任意字符|用于分隔多个不同的正则表达式任意一个匹配即可模式在匹配前会去除首尾空白且匹配不区分大小写。这三条规则在源码 StringUtils.filterPattern 中得到精确对应def filterPattern(names: Seq[String], pattern: String): Seq[String] { val funcNames scala.collection.mutable.SortedSet.empty[String] pattern.trim().split(\\|).foreach { subPattern try { val regex ((?i) subPattern.replaceAll(\\*, .*)).r funcNames names.filter{ name regex.pattern.matcher(name).matches() } } catch { case _: PatternSyntaxException } } funcNames.toSeq }从实现可以看到pattern.trim()对应去除首尾空白规则(?i)前缀对应不区分大小写规则subPattern.replaceAll(\\*, .*)将*转换为正则的.*匹配 0 个或多个任意字符pattern.split(\\|)按|拆分多个子模式只要有一个匹配即保留该表名单个子模式如果本身就是非法正则PatternSyntaxException会被静默忽略不影响其他子模式的匹配。此外该工具方法同时服务于SHOW TABLES与SHOW FUNCTIONS其注释也明确说明了通配符约定是理解模式过滤行为的关键代码。输出格式命令返回三列结果列名含义database表所属数据库名称tableName表名isTemporary是否为临时视图false表示永久表/视图true表示临时视图V2 数据源执行路径中的输出定义见 ShowTablesExec每一行由toCatalystRow(ident.namespace().quoted, ident.name(), isTempView(ident, catalog))构成临时视图的判定通过session.sessionState.catalog.isTempView(...)完成。使用示例以下示例完整继承自官方文档可直接在spark-sql或spark-shell中验证。列出当前数据库的全部表-- List all tables in default database SHOW TABLES; ---------------------------- |database|tableName|isTemporary| ---------------------------- | default| sam| false| | default| sam1| false| | default| suj| false| ----------------------------使用 FROM 指定数据库-- List all tables from userdb database SHOW TABLES FROM userdb; ---------------------------- |database|tableName|isTemporary| ---------------------------- | userdb| user1| false| | userdb| user2| false| ----------------------------使用 IN 指定数据库与 FROM 等价-- List all tables in userdb database SHOW TABLES IN userdb; ---------------------------- |database|tableName|isTemporary| ---------------------------- | userdb| user1| false| | userdb| user2| false| ----------------------------按模式过滤前缀通配-- List all tables from default database matching the pattern sam* SHOW TABLES FROM default LIKE sam*; ---------------------------- |database|tableName|isTemporary| ---------------------------- | default| sam| false| | default| sam1| false| ----------------------------sam*中的*匹配 0 个或多个字符因此sam、sam1均被命中。按模式过滤多模式并用-- List all tables matching the pattern sam*|suj SHOW TABLES LIKE sam*|suj; ---------------------------- |database|tableName|isTemporary| ---------------------------- | default| sam| false| | default| sam1| false| | default| suj| false| ----------------------------|分隔两个子模式sam*匹配sam、sam1suj精确匹配suj三者并集即为结果。进阶使用技巧模式是正则表达式不只是通配符由于除*、|外的模式部分按正则语义处理你可以使用更复杂的表达式。例如统一测试 ShowTablesSuiteBase 中的用例-- 匹配以 table_name_1 或 table_name_2 开头的表 SHOW TABLES FROM ns1 LIKE table_name_1*|table_name_2*; -- 匹配以 2b 结尾的表 SHOW TABLES FROM ns1 LIKE *2b;匹配不区分大小写模式匹配是大小写不敏感的源码中通过(?i)实现因此LIKE SAM*与LIKE sam*结果一致。临时视图也会出现在结果中isTemporary列为true的行即临时视图。V2 路径的 ShowTablesExec 对实现了RelationCatalog的目录会调用listRelationSummaries以便视图与表并列展示测试 ShowTablesSuiteBase 也验证了CREATE TEMP VIEW之后临时视图会出现在SHOW TABLES的结果中且isTemporary为true。数据库不存在时报错当指定的数据库不存在时命令会抛出SCHEMA_NOT_FOUND类错误见测试 ShowTablesSuiteBase-- 假设 nonexist 不存在 SHOW TABLES IN nonexist; -- 抛出 AnalysisExceptionSCHEMA_NOT_FOUND编程接口调用在 Scala 中也可以通过 DataFrame API 执行并检查结果与统一测试基座中的用法一致val df spark.sql(SHOW TABLES FROM userdb) df.show()底层实现原理SHOW TABLES的完整执行链路可以概括为SQL 文本 → ANTLR 语法解析 → 逻辑计划 → 物理执行。语法解析语法规则定义在 SqlBaseParser.g4SHOW TABLES生成showTables语法树节点命令构造解析器将其转换为ShowTablesCommandV1 路径tables.scala 中的定义接收databaseName、tableIdentifierPattern、output等参数而 V2 路径由 ShowTablesExec 承载目录查询V1 路径通过catalog.listTables(db, pattern)或catalog.listTables(db)获取表标识见 tables.scalaV2 路径则对RelationCatalog调用listRelationSummaries、对纯TableCatalog调用listTables模式过滤对每个表标识应用StringUtils.filterPattern不匹配的跳过V2 实现见 ShowTablesExec.scala结果输出每行输出(database, tableName, isTemporary)其中isTemporary通过会话目录的isTempView判定。相关语句SHOW TABLES常与以下 DDL 语句配套使用官方文档的Related Statements一节列出的链接均已转换为仓库根目录相对路径CREATE TABLEDROP TABLECREATE DATABASEDROP DATABASE小结SHOW TABLES默认列出当前数据库的表可用FROM/IN切换数据库LIKE子句支持正则模式过滤其中*是通配符、|是多模式分隔符匹配不区分大小写且自动去除首尾空白输出三列database、tableName、isTemporary临时视图以isTemporary true标识底层由ShowTablesCommand/ShowTablesExec配合StringUtils.filterPattern实现行为细节去空白、大小写、通配符转换、非法正则忽略均可从源码得到印证。掌握这一命令可以帮助你在使用 Spark SQL 进行元数据探查、脚本自动化与数据治理时快速摸清库表结构是日常开发中高频、高效的必备技能。【免费下载链接】sparkApache Spark - A unified analytics engine for large-scale data processing项目地址: https://gitcode.com/gh_mirrors/sp/spark创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Han1meViewer:APK语义化解析与构建上下文感知分析工具 2026/9/19 21:58:55

Han1meViewer:APK语义化解析与构建上下文感知分析工具

1. Han1meViewer 是什么?它解决的不是“看APK”而是“理解APK结构”的根本问题Han1meViewer 这个名字乍一听像某个小众汉化工具,但实际接触过 Android 开发或逆向分析的人很快会意识到:它压根不是“Viewer”(查看器)这…

阅读更多 →
十三辙结构化实践:从OCR到NLP押韵建模与TTS韵律控制 2026/9/19 21:58:55

十三辙结构化实践:从OCR到NLP押韵建模与TTS韵律控制

简介:本资源是一份专为诗词、曲艺创作者及传统音韵学习者设计的《十三辙〈韵辙表〉》实用工具资料,解决押韵选字难、韵部辨识不清、创作缺乏音韵依据等核心问题。PDF文件共1个,大小966KB,内容系统梳理普通话十三辙分类逻辑&#x…

阅读更多 →
基于Arduino与APM的无人船制作:从PID调参到故障排查 2026/9/19 21:58:55

基于Arduino与APM的无人船制作:从PID调参到故障排查

简介:基于Arduino的无人船项目完整开发记录,面向嵌入式爱好者、物联网竞赛团队及无人系统初学者。文档以实际项目为主线,覆盖硬件选型与搭建、软件控制、PID直线航行、GPS与APM自动巡航,并针对OSD固件丢失、APM接口脱焊、摄像头供…

阅读更多 →
Hugo 模板函数 math.Mul 详解:多参数乘法与浮点类型提升规则 2026/9/19 21:58:55

Hugo 模板函数 math.Mul 详解:多参数乘法与浮点类型提升规则

Hugo 模板函数 math.Mul 详解:多参数乘法与浮点类型提升规则 【免费下载链接】hugo The world’s fastest framework for building websites. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo 本文以 Hugo 官方函数参考文档 math.Mul 为主体,结…

阅读更多 →
BabelDOC PDF 翻译实战指南:3 步从安装到输出双语文档 2026/9/19 21:58:55

BabelDOC PDF 翻译实战指南:3 步从安装到输出双语文档

BabelDOC PDF 翻译实战指南:3 步从安装到输出双语文档 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC 是一款面向论文与技术文档的 PDF 文档翻译工具。它解析 PDF 结构后&…

阅读更多 →
OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗? 2026/9/19 21:55:54

OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞