如何通过Redshift查询存储在AWS Glue中的表描述与列注释元数据
结论
该操作完全可以实现,主流实现方案有以下两种:
方案1:通过Redshift Spectrum关联Glue Data Catalog(推荐)
这是官方原生支持的方案,无需额外开发,操作步骤如下:
- 给你的Redshift集群关联具备Glue Data Catalog访问权限的IAM角色,角色需要至少开放
glue:GetDatabase、glue:GetTable、glue:GetColumns权限。 - 在Redshift中执行以下SQL创建绑定Glue数据库的外部Schema:
CREATE EXTERNAL SCHEMA glue_meta_schema FROM DATA CATALOG DATABASE '替换为你的Glue数据库名称' REGION '替换为你的AWS资源所在区域,比如cn-north-1' IAM_ROLE '替换为你的Redshift关联IAM角色ARN,格式为arn:aws:iam::账户ID:role/角色名';
- 直接查询Redshift系统视图获取元数据:
- 查询指定Schema下所有表的元数据(含表描述):
SELECT tablename, location, input_format, table_comment FROM svv_external_tables WHERE schemaname = 'glue_meta_schema';
- 查询指定表的字段元数据(含列注释):
SELECT column_name, data_type, comment AS column_comment FROM svv_external_columns WHERE schemaname = 'glue_meta_schema' AND tablename = '替换为你要查询的表名';
方案2:自定义同步Glue元数据到Redshift
如果你有高频查询元数据、自定义扩展元数据字段的需求,可以用以下方案实现:
- 在Redshift中提前创建自定义元数据表,存储表描述、列注释等字段。
- 配置Glue元数据更新事件触发Lambda函数,每次Glue表/字段新增、修改时,Lambda自动将最新的元数据写入Redshift的自定义表中。
- 后续直接查询自定义的元数据表即可获取所需信息。
注意事项
如果查询时发现注释为空,优先检查关联的IAM角色权限是否配置完整,其次确认Glue中的表、列注释已经正常保存。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

