
OpenMetadata 元数据摄取管线配置指南数据库服务 Metadata Pipeline 的 14 个核心配置项深度解析【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata导读Metadata Pipeline元数据摄取管线是 OpenMetadata 连接数据库服务、持续同步库表结构、视图、存储过程等元数据信息的核心工作流。本指南以 OpenMetadata 官方服务配置文档 metadata.md 为骨架逐项讲解 Database Service Metadata Pipeline 的 14 个配置项——从四类过滤模式、FQN 过滤开关到软删除语义、调试日志与重试策略——并结合仓库内摄取工作流源码与真实 YAML 示例帮助你在 UI 表单与 YAML 配置两个层面都能准确、可复用地完成元数据摄取的精细化管控。一、元数据摄取管线与配置文档的定位OpenMetadata 的元数据摄取由MetadataWorkflow承载其实现位于 metadata.pyclass MetadataWorkflow(IngestionWorkflow): Metadata ingestion workflow implementation. def set_steps(self): # We keep the source registered in the workflow self.source self._get_source() sink self._get_sink() self.steps (sink,)从源码结构看Metadata 工作流由「Source读取源端元数据」与「Sink写入 OpenMetadata 服务端」两步构成Source 类型即mysql、postgres、snowflake等数据库连接器Sink 类型为metadata-rest。管线每一步的行为都由sourceConfig.config下的参数控制。本文档 metadata.md 正是这些参数在 OpenMetadata UI「服务 → 编辑 → 添加 Metadata Ingestion」页面中的官方字段说明来源。UI 中看到的每个配置项都与文档中带$(id...)标识的字段一一对应。下面按文档顺序逐一展开。二、四类过滤模式用正则精确圈定摄取范围过滤模式Filter Pattern是元数据摄取中最常用的配置用于控制「哪些对象进入 OpenMetadata」。每一类过滤模式都遵循同一套规则Include包含填入一组正则表达式OpenMetadata 只摄取名称能匹配其中任意一个正则的对象其余全部排除。例如只摄取名称以demo开头的数据库Include 填^demo.*。Exclude排除填入一组正则表达式OpenMetadata 排除所有名称能匹配其中任意一个正则的对象其余全部包含。例如排除名称中包含demo的数据库Exclude 填.*demo.*。两者可同时配置最终生效范围是「被包含」与「未被排除」的交集。文档按对象层级给出了四类独立的过滤模式1. Database Filter Pattern数据库过滤$(iddatabaseFilterPattern)控制数据库database是否纳入摄取。示例Include^demo.*仅摄取名称以demo开头的数据库。Exclude.*demo.*排除所有名称含demo的数据库。2. Schema Filter Pattern模式过滤$(idschemaFilterPattern)控制 schema 是否纳入摄取。语法与数据库过滤完全一致正则匹配的是 schema 名称Include^demo.*仅摄取名称以demo开头的 schema。Exclude.*demo.*排除所有名称含demo的 schema。3. Table Filter Pattern表过滤$(idtableFilterPattern)控制 table 是否纳入摄取正则匹配表名Include^demo.*仅摄取名称以demo开头的表。Exclude.*demo.*排除所有名称含demo的表。4. Stored Procedure Filter Pattern存储过程过滤$(idstoredProcedureFilterPattern)控制存储过程是否纳入摄取。文档给出了专用于存储过程的示例Include^sp_.*仅摄取名称以sp_开头的存储过程。Exclude.*temp.*排除所有名称含temp的存储过程。过滤在源码中的实际落点过滤并非 UI 层噱头而是直接作用于摄取拓扑的关键节点。在数据库服务的抽象基类 database_service.py 中class DatabaseServiceSource(TopologyRunnerMixin, Source, ABC): Base class for Database Services. It implements the topology and context. ... abstractmethod def get_database_names(self) - Iterable[str]: Prepares the database name to be sent to stage. Filtering happens here. ... abstractmethod def get_tables_name_and_type(self) - Iterable[tuple[str, TableType]] | None: Prepares the table name to be sent to stage. Filtering happens here. 从源码结构可以确认get_database_names、get_tables_name_and_type等抽象方法在实现中都会基于本节的 Filter Pattern 对候选对象做正则匹配过滤之后再进入 Sink 写入 OpenMetadata。也就是说配置过滤模式能够直接减少源端到服务端的无效数据传输与 API 调用而不是先全量摄取再丢弃。三、Use FQN For Filtering按全限定名过滤同名对象$(iduseFqnForFiltering)是一个开关型配置开启后上述过滤模式将作用于对象的Fully Qualified NameFQN全限定名即service_name.db_name.schema_name.table_name这样的完整路径关闭默认时则只作用于对象的裸名称如table_name。典型场景当多个数据库下存在同名 schema、或多个 schema 下存在同名表而你想只过滤掉其中某一个时仅凭裸名称无法区分此时应开启该开关在过滤模式中写入完整 FQN 路径例如表过滤的 Exclude 填^my_service.my_db.my_schema.demo_table$即可精确定位。四、Include Views / Include Tags摄取内容的两个快捷开关Include Views$(idincludeViews)控制是否将视图view纳入元数据摄取。关闭后源端视图将不会被同步。Include Tags$(idincludeTags)控制是否将源端已有的标签tags随元数据一起摄取进 OpenMetadata。如果源系统如 Snowflake、BigQuery 的标签体系与 OpenMetadata 标签体系存在映射关系此开关决定是否同步。二者都是布尔开关语义直白但会显著影响摄取结果的数据量与后续治理工作流——关闭 Tags 可避免源端标签污染 OpenMetadata 的标签体系适合标签治理规范尚未统一的团队。五、Override Metadata元数据覆盖策略$(idoverrideMetadata)控制源端摄取到的元数据是否覆盖 OpenMetadata 服务端已有的元数据是维护数据质量的关键开关开启enabled源端摄取的元数据将直接覆盖并替换 OpenMetadata 中已存在的同名元数据。关闭disabled源端摄取的元数据不会覆盖已有值只会填充 OpenMetadata 中尚未赋值的字段。文档明确指出该策略仅适用于description描述、tags标签、owner负责人和displayName显示名这四类字段。该配置在源码中会被直接传递到 Sink 层。在 metadata.py 中可以看到def _get_sink(self) - Sink: sink_type self.config.sink.type sink_class import_sink_class(sink_typesink_type) sink_config self.config.sink.model_dump().get(config, {}) sink_config.setdefault(override_metadata, self._source_override_metadata()) sink: Sink sink_class.create(sink_config, self.metadata) return sink def _source_override_metadata(self) - bool: source_config self.config.source.sourceConfig.config return bool(getattr(source_config, overrideMetadata, False))这段源码证实overrideMetadata取自source.sourceConfig.config其取值会通过sink_config.setdefault(...)注入 Sink 配置。若管线未显式设置该字段则按False不覆盖处理——这正是「服务端已有的人工编辑描述、标签、负责人不被摄取任务冲掉」的保障机制。实践建议在团队刚接入 OpenMetadata、需要以源端为准批量补齐描述时开启在元数据已经过多轮人工治理后务必关闭以避免源端的空值或过期描述覆盖人工成果。六、Enable Debug Logs问题排查入口$(idenableDebugLog)将摄取的进程日志级别切换到 debug。开启后可在服务的Ingestion摄取Tab中查看更详细的执行日志从而深入定位错误根因。配合 YAML 侧的workflowConfig.loggerLevel可取DEBUG、INFO、WARN、ERROR可以在 sample_data.yaml 这类示例中看到其写法workflowConfig: loggerLevel: INFO # DEBUG, INFO, WARN or ERROR当 UI 表单排查信息不足时在 YAML 中直接设置loggerLevel: DEBUG也是等价的调试手段。七、Mark Deleted Tables表的软删除语义$(idmarkDeletedTables)是可选配置用于在摄取过程中启用表的软删除soft deletion。启用后需要把握三个关键约束仅作用于源端已删除的表只有「从数据源中被删除」的表才会被软删除普通缺失不会被误删。仅作用于当前管线正在摄取的 schema软删除严格限定在本管线本次摄取的 schema 范围内。级联删除关联实体被软删除的表所关联的 test suite测试套件、lineage血缘等实体也会一并删除。会发生软删除的场景未配置任何过滤但某表已在数据源中删除 → 该表在 OpenMetadata 中被软删除。配置了Schema Filter Pattern只包含SchemaA→SchemaA中任何被源端删除的表都会在 OpenMetadata 中被软删除。TableA已存在于 OpenMetadata之后给Table Filter Pattern添加了对TableA的排除 →TableA会被软删除。不会发生软删除的场景已摄取SchemaA与SchemaB之后用Schema Filter Pattern排除SchemaB→SchemaB中的表不会被删除被排除的 schema 根本不参与本次摄取。已摄取SchemaA与SchemaB本次管线用Schema Filter Pattern只包含SchemaA→SchemaB中源端已删除的表不会被删除SchemaB在本次摄取中被忽略。在上述不会被自动软删除的情况下文档明确建议可在 UI 中手动删除对应的表或 schema。理解这套语义非常关键——它意味着软删除的触发与「过滤模式」强耦合过滤范围的收缩并不会自动清理过滤范围之外的存量数据。八、Mark Deleted Stored Procedures存储过程的软删除$(idmarkDeletedStoredProcedures)与 Mark Deleted Tables 语义完全对称只是作用对象从表换成了存储过程启用后仅源端已删除、且位于当前管线正在摄取的 schema内的存储过程会被软删除关联的 test suite、lineage 一并删除场景规则与表一致包含SchemaA时SchemaA内被删的存储过程会软删排除或未摄取SchemaB时SchemaB内被删的存储过程不会被软删需在 UI 手动清理。九、View Parsing Timeout Limit视图解析超时$(idviewParsingTimeoutLimit)用于指定解析视图定义 SQLview definition sql以进行血缘lineage分析时的超时时间。视图的血缘推断需要对视图创建语句做 SQL 解析复杂或超长的视图定义可能耗时较长设置合理的超时上限可以避免单个视图解析阻塞整条摄取管线。该参数按需调大或调小取值单位与具体配置表单提示一致建议从默认值开始遇到视图解析超时错误时再逐步调大。十、Number of Retries 与 Raise on Error失败处理策略Number of Retries$(idretries)工作流以失败告终时的重试次数。配置后摄取任务失败会自动按该次数重试适合网络抖动、源端临时不可用等瞬时故障场景。Raise on Error$(idraiseOnError)决定工作流遇到异常时是标记为失败fail还是避免抛出异常avoid raising exceptions。默认标记失败便于告警与排查若你希望在个别对象摄取失败时不中断整条管线、让其余对象继续摄取可关闭该开关。两者配合使用retries解决「瞬时失败重试」raiseOnError解决「局部失败是否阻断整条管线」。十一、一份完整的 Metadata Pipeline YAML 配置示例以上全部配置项在 YAML 中统一位于source.sourceConfig.config下。参考仓库中 sample_data.yaml 的骨架结构一个典型的数据库元数据摄取配置如下字段名与文档中$(id...)一一对应source: type: mysql # 按实际连接器填写如 postgres / snowflake / bigquery serviceName: local_mysql # 已在 OpenMetadata 中注册的服务名 serviceConnection: config: type: Mysql username: openmetadata_user authType: password: ${MYSQL_PASSWORD} hostPort: localhost:3306 databaseSchema: openmetadata_db sourceConfig: config: type: DatabaseMetadata # 元数据摄取管线类型 databaseFilterPattern: includes: - ^demo.* excludes: - .*backup.* schemaFilterPattern: includes: - ^public$ tableFilterPattern: includes: - orders|users storedProcedureFilterPattern: includes: - ^sp_.* useFqnForFiltering: false includeViews: true includeTags: true overrideMetadata: false enableDebugLog: false markDeletedTables: true markDeletedStoredProcedures: false viewParsingTimeoutLimit: 60 retries: 3 raiseOnError: false sink: type: metadata-rest config: {} workflowConfig: loggerLevel: INFO openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: ${JWT_TOKEN}实践要点type: DatabaseMetadata是数据库服务元数据摄取管线的固定取值其余为本次讲解的 14 个配置项过滤模式的正则建议先在本地用小数据集验证避免 Include/Exclude 写错导致漏采或误采markDeletedTables与过滤模式耦合的软删除语义见第七、八节务必在启用前确认防止意外的数据清理overrideMetadata默认按false处理人工治理后的描述、标签、负责人默认不会被摄取任务覆盖。十二、配置项速查表配置项文档 ID类型核心作用Database Filter PatterndatabaseFilterPattern正则列表控制数据库纳入/排除Schema Filter PatternschemaFilterPattern正则列表控制 schema 纳入/排除Table Filter PatterntableFilterPattern正则列表控制表纳入/排除Stored Procedure Filter PatternstoredProcedureFilterPattern正则列表控制存储过程纳入/排除Use FQN For FilteringuseFqnForFiltering布尔过滤是否作用于全限定名Include ViewsincludeViews布尔是否摄取视图Include TagsincludeTags布尔是否摄取标签Override MetadataoverrideMetadata布尔源端元数据是否覆盖服务端已有值Enable Debug LogsenableDebugLog布尔进程日志切到 debug 级别Mark Deleted TablesmarkDeletedTables布尔启用表的软删除Mark Deleted Stored ProceduresmarkDeletedStoredProcedures布尔启用存储过程的软删除View Parsing Timeout LimitviewParsingTimeoutLimit数值视图 SQL 血缘解析超时Number of Retriesretries数值失败重试次数Raise on ErrorraiseOnError布尔异常时标记失败或避免抛出结语Metadata Pipeline 是 OpenMetadata 数据资产持续新鲜度的生命线而本文档覆盖的 14 个配置项正是对这条生命线「摄取什么、以什么方式摄取、失败如何处理」的完整控制面。过滤模式与 FQN 开关决定摄取范围Include Views/Tags 与 Override Metadata 决定内容与覆盖策略两个软删除开关决定存量数据的清理语义调试与重试参数则保障管线可观测、可恢复。无论你是通过 UI 表单逐项配置还是通过 YAML 声明式管理都可以以上文为索引在 metadata.md、metadata.py 与 sample_data.yaml 之间交叉对照构建出符合自身数据治理要求的元数据摄取管线。【免费下载链接】OpenMetadataThe Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMetadata创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考