news 2025/12/27 20:54:17

Flink SQL「SHOW / SHOW CREATE」元数据巡检、DDL 复刻与排障速查(含 Java 示例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flink SQL「SHOW / SHOW CREATE」元数据巡检、DDL 复刻与排障速查(含 Java 示例)

1. SHOW 与 SHOW CREATE 的定位

1.1 SHOW:列出“某个父级下的对象”

SHOW用于列出其对应父对象下的对象清单,例如:

  • catalogs、databases
  • tables、views、materialized tables
  • columns、functions、modules
  • partitions、procedures
  • (CLI/Gateway 侧)jars、jobs
  • models

1.2 SHOW CREATE:打印“可复刻的 DDL”

SHOW CREATE用来打印创建某个对象的 DDL,目前(在你给的内容里):

  • SHOW CREATE可用于 table 和 view
  • 同时文档还给出了SHOW CREATE MODEL(模型 DDL 打印),用于复刻模型

额外注意:SHOW CREATE TABLE当前仅支持 Flink SQL DDL 创建的表

2. Flink SQL 当前支持的 SHOW 清单(官方列表)

  • SHOW CATALOGS
  • SHOW CURRENT CATALOG
  • SHOW CREATE CATALOG
  • SHOW DATABASES
  • SHOW CURRENT DATABASE
  • SHOW TABLES
  • SHOW CREATE TABLE
  • SHOW COLUMNS
  • SHOW PARTITIONS
  • SHOW PROCEDURES
  • SHOW VIEWS
  • SHOW CREATE VIEW
  • SHOW MATERIALIZED TABLES
  • SHOW CREATE MATERIALIZED TABLE
  • SHOW FUNCTIONS
  • SHOW MODULES
  • SHOW JARS
  • SHOW JOBS
  • SHOW MODELS

3. Java 里怎么执行 SHOW?(TableEnvironment.executeSql)

在 Java 中,SHOW语句通过TableEnvironment.executeSql()执行:

  • 成功:返回可打印的结果对象(TableResult
  • 失败:抛异常

示例(与你提供的内容一致,略去 connector 细节):

StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();StreamTableEnvironmenttEnv=StreamTableEnvironment.create(env);// show catalogstEnv.executeSql("SHOW CATALOGS").print();// show current catalogtEnv.executeSql("SHOW CURRENT CATALOG").print();// create a catalogtEnv.executeSql("CREATE CATALOG cat2 WITH (...)");// show create catalogtEnv.executeSql("SHOW CREATE CATALOG cat2").print();// show databasestEnv.executeSql("SHOW DATABASES").print();// show current databasetEnv.executeSql("SHOW CURRENT DATABASE").print();// create a tabletEnv.executeSql("CREATE TABLE my_table (...) WITH (...)");// show tablestEnv.executeSql("SHOW TABLES").print();// show create tabletEnv.executeSql("SHOW CREATE TABLE my_table").print();// show columns with LIKE filtertEnv.executeSql("SHOW COLUMNS FROM my_table LIKE '%f%'").print();// create a viewtEnv.executeSql("CREATE VIEW my_view AS SELECT * FROM my_table");// show viewstEnv.executeSql("SHOW VIEWS").print();// show create viewtEnv.executeSql("SHOW CREATE VIEW my_view").print();// show functionstEnv.executeSql("SHOW FUNCTIONS").print();// show user functionstEnv.executeSql("SHOW USER FUNCTIONS").print();// show modulestEnv.executeSql("SHOW MODULES").print();// show full modulestEnv.executeSql("SHOW FULL MODULES").print();

4. Catalog / Database:先找“你在哪里”,再找“你有什么”

4.1 SHOW CATALOGS:列出所有 catalog(支持 LIKE/ILIKE/NOT)

SHOWCATALOGS[[NOT](LIKE|ILIKE)<sql_like_pattern>]
  • LIKE:大小写敏感

  • ILIKE:大小写不敏感

  • pattern 规则沿用 MySQL:

    • %任意长度(可为 0)
    • _单字符
    • \%\_表示字面量

例子:

SHOWCATALOGS;SHOWCATALOGSLIKE'%log1';SHOWCATALOGS ILIKE'%LOG1';

4.2 SHOW CURRENT CATALOG:当前 catalog 是谁?

SHOWCURRENTCATALOG;

4.3 SHOW CREATE CATALOG:打印 catalog 的创建语句

SHOWCREATECATALOG catalog_name;

输出包含 catalog 名称与属性配置,适合做“环境对照/复刻”。

4.4 SHOW DATABASES:列出某个 catalog 下的库(可选)

SHOWDATABASES[(FROM|IN)catalog_name][[NOT](LIKE|ILIKE)<pattern>]

4.5 SHOW CURRENT DATABASE:当前 database 是谁?

SHOWCURRENTDATABASE;

5. Table / View:列清单 + 复刻 DDL(最常用)

5.1 SHOW TABLES:列出表(可指定库,可 LIKE/NOT LIKE)

SHOWTABLES[(FROM|IN)[catalog_name.]database_name][[NOT]LIKE<pattern>]

例子(官方示例风格):

SHOWTABLESFROMdb1;SHOWTABLESFROMcatalog1.db1;SHOWTABLESFROMdb1LIKE'%n';SHOWTABLESFROMdb1NOTLIKE'%n';SHOWTABLES;

5.2 SHOW CREATE TABLE:一键打印建表 DDL

SHOWCREATETABLE[[catalog_name.]db_name.]table_name;

输出包含:

  • 表名(通常是全限定名)
  • 字段名、类型
  • 约束(如 PK NOT ENFORCED)
  • 注释
  • watermark、计算列等
  • WITH 配置(connector/options)

注意:当前只支持 Flink SQL DDL 创建的表。

5.3 SHOW VIEWS / SHOW CREATE VIEW:视图同理

SHOWVIEWS[(FROM|IN)[catalog_name.]database_name][[NOT]LIKE<pattern>];SHOWCREATEVIEW[catalog_name.][db_name.]view_name;

6. 列、分区与过程:排障时“特别顶用”的三件套

6.1 SHOW COLUMNS:列结构速查(支持 LIKE/NOT LIKE)

SHOWCOLUMNS(FROM|IN)[[catalog_name.]database.]table_name[[NOT]LIKE<pattern>];

典型用途:

  • 快速确认字段名、类型、是否可为空
  • 判断是否存在 watermark / proctime / computed column
  • 排查“写入字段不匹配”“字段名拼错”“类型不兼容”等问题

6.2 SHOW PARTITIONS:分区表排查神器

SHOWPARTITIONS[[catalog_name.]database.]table_name[PARTITION(k1=v1,k2=v2,...)];

典型用途:

  • “我明明写了数据,为什么查不到?”——先看分区是否写进了你预期的分区
  • “我过滤条件生效了吗?”——对照分区列表比猜更靠谱

6.3 SHOW PROCEDURES:列出过程(可过滤)

SHOWPROCEDURES[(FROM|IN)[catalog_name.]database_name][[NOT](LIKE|ILIKE)<pattern>];

7. Functions / Modules:函数找不到、解析怪?先看它俩

7.1 SHOW FUNCTIONS(系统函数 + UDF),SHOW USER FUNCTIONS(仅 UDF)

SHOW[USER]FUNCTIONS[(FROM|IN)[catalog_name.]database_name][[NOT](LIKE|ILIKE)<pattern>];

7.2 SHOW MODULES / SHOW FULL MODULES:看模块启用状态与解析顺序

SHOW[FULL]MODULES;
  • SHOW MODULES:仅显示“启用的模块”和解析顺序
  • SHOW FULL MODULES:显示“已加载模块 + used(true/false) 状态 + 解析顺序”

很多“同名函数冲突/突然不可用”的根因,就是模块启用状态或解析顺序变化。

8. SQL CLI / SQL Gateway 限定:SHOW JARS、SHOW JOBS

SHOWJARS;SHOWJOBS;

注意(官方强调):

  • 目前SHOW JARS/SHOW JOBS只在 SQL CLI 或 SQL Gateway 生效
  • 在纯 Java TableEnvironment 场景下不一定可用(取决于你接入方式)

9. 模型:SHOW MODELS 与 SHOW CREATE MODEL

SHOWMODELS[(FROM|IN)[catalog_name.]database_name][[NOT](LIKE|ILIKE)<pattern>];SHOWCREATEMODEL[catalog_name.][db_name.]model_name;

SHOW CREATE MODEL的输出包含:

  • model 名称
  • 输入/输出 schema
  • model options 与其它配置

适合:理解既有模型结构、跨库复刻模型。

10. 一套“拿来就用”的排障顺序(强烈推荐)

当你遇到:表找不到 / 函数解析不对 / DDL 不清楚 / 分区数据缺失——按这个顺序走:

1)确认上下文

SHOWCURRENTCATALOG;SHOWCURRENTDATABASE;

2)确认对象是否存在

SHOWTABLES;SHOWVIEWS;SHOWFUNCTIONS;

3)对象太多就过滤

SHOWTABLESLIKE'%order%';SHOWFUNCTIONS ILIKE'%sha%';

4)需要复刻/核对结构

SHOWCREATETABLExxx;SHOWCOLUMNSFROMxxx;

5)分区问题

SHOWPARTITIONS xxx;

6)函数冲突/不可用

SHOWFULLMODULES;

SHOW/SHOW CREATE 在 Flink SQL 里不只是“看一眼”的命令,而是一套完整的元数据自检与复刻工具链:写 SQL 前先确认上下文,出问题先 SHOW 再猜,迁移环境直接 SHOW CREATE 复制 DDL,效率会高一大截。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/18 18:20:12

LeetDown免费降级工具:A6/A7设备完整降级终极指南

LeetDown免费降级工具&#xff1a;A6/A7设备完整降级终极指南 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 你是否还保留着iPhone 5s或iPad 4这些经典设备&#xff1f;想要回到…

作者头像 李华
网站建设 2025/12/18 18:20:06

NTFS转Btrfs终极指南:无损文件系统转换完整教程

NTFS转Btrfs终极指南&#xff1a;无损文件系统转换完整教程 【免费下载链接】ntfs2btrfs 项目地址: https://gitcode.com/gh_mirrors/nt/ntfs2btrfs 在Linux系统管理领域&#xff0c;文件系统转换一直是个备受关注的话题。今天我们要介绍的是一个革命性的工具——ntfs2…

作者头像 李华
网站建设 2025/12/22 10:59:32

应对企业微信复杂弹窗与强制更新提示的自愈策略

一、 引言&#xff08;Introduction&#xff09; 技术痛点&#xff1a; RPA 脚本通常是线性执行的&#xff08;步骤 A -> 步骤 B&#xff09;。但在实际运行中&#xff0c;企业微信会弹出“版本更新”、“网络连接断开”、“异常登录提醒”或“功能引导”等随机弹窗&#xf…

作者头像 李华
网站建设 2025/12/18 18:18:00

失业了一年多后, 有了一个特殊的契机, 远程工作到现在一个月了, 有很多感触想聊一下.在家工作有想象中那么爽吗?爽, 但一些情况与想象中的并不一样.不用上下班真的节约时间吗?真的, 而且节约的

失业了一年多后, 有了一个特殊的契机, 远程工作到现在一个月了, 有很多感触想聊一下.在家工作有想象中那么爽吗?爽, 但一些情况与想象中的并不一样.不用上下班真的节约时间吗?真的, 而且节约的不只是上下班的时间.还有穿衣服, 理书包, 下楼, 上楼, 到了公司里先休息下, 和&qu…

作者头像 李华
网站建设 2025/12/21 4:36:40

模板匹配定位与找圆找线卡尺ROI跟随 - C# OpenCVSharp与自定义控件库

模板匹配定位 找圆找线卡尺ROI跟随 C# opencvsharp opencv 工具库 仿visionpro 模板匹配 找圆 找线 卡尺 九点 棋盘格 自定义控件库最近在折腾工业视觉定位方案&#xff0c;发现用C#搭配OpenCVSharp搞视觉算法比想象中有意思。尤其是想模仿VisionPro的工作流&#xff0c;自…

作者头像 李华
网站建设 2025/12/24 6:58:26

1、数据科学中的命令行:高效生产力的秘诀(上)

数据科学中的命令行:高效生产力的秘诀(上) 在当今的数据科学领域,数据科学家们拥有众多令人兴奋的技术和编程语言可供选择,如 Python、R、Hadoop、Julia、Pig、Hive 和 Spark 等。然而,有一项有着 40 多年历史的技术——命令行,却常常被忽视。那么,命令行为何能在年轻…

作者头像 李华