
OpenMetadata IOMETE 连接器配置指南连接 Lakehouse 集群并采集元数据【免费下载链接】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本篇指南基于 OpenMetadata 仓库中 IOMETE 连接器的官方文档与实现源码系统讲解如何通过 OpenMetadata 接入 IOMETE Lakehouse从连接器前置要求、连接参数的完整说明到底层 SQLAlchemy URL 的构建逻辑与元数据采集行为帮助读者快速完成 IOMETE 服务的创建、连通性测试与元数据摄取配置。IOMETE 连接器概述IOMETE 是一个基于 Spark 的 Lakehouse 数据平台它提供统一的数据湖仓服务能力。OpenMetadata 通过内置的 IOMETE 数据库连接器可以将其湖仓集群中的目录Catalog、数据库Schema、表与视图等元数据采集到 OpenMetadata 平台中用于统一的数据目录、血缘追踪与数据治理。从源码结构看IOMETE 连接器的实现集中存放于 ingestion/src/metadata/ingestion/source/database/iomete 目录下包含四个核心模块connection.py负责构建 SQLAlchemy 连接 URL底层使用iomete-sqlalchemy方言该方言通过 setuptools entry point 自动注册metadata.py实现IometeSource元数据源负责数据库Catalog与 Schema 的枚举及视图 DDL 的抓取lineage.py实现IometeLineageSource血缘源service_spec.py通过DefaultDatabaseSpec将上述三个类装配为完整的连接器服务规格。前置要求在使用 IOMETE 连接器之前需要确认以下前提条件IOMETE 用户必须能够访问湖仓集群Lakehouse cluster并具备足够的读取元数据的权限。这是元数据采集能否成功的基础权限不足时会导致 Schema、Table 或 View 的列举失败。在 OpenMetadata UI 中创建 IOMETE 服务时需要正确填写下方“连接详情”一节中描述的所有连接参数。此外OpenMetadata 提供了针对 IOMETE 的连接测试能力。其测试步骤定义在 openmetadata-service/src/main/resources/json/data/testConnections/database/iomete.json 中依次包含以下校验步骤步骤校验内容是否必选CheckAccess验证能够连接 IOMETE 服务并使用给定凭据完成认证必选shortCircuit失败即终止GetSchemas列出当前用户可访问的所有 Schema必选GetTables从给定 Schema 中列举表必选GetViews从给定 Schema 中列举视图可选其中CheckAccess失败时会直接短路错误信息会提示检查 host/port、username、password、cluster 与 data planeGetSchemas/GetTables失败则提示检查用户权限是否充足。连接详情在 OpenMetadata UI 中新建 IOMETE 数据库服务时需要配置以下连接参数。下表汇总了各参数的名称、必填性及用途随后逐一详细说明参数必填说明Host and Port (hostPort)是IOMETE 服务主机可选端口Username (username)是连接用户需具备读取全部元数据权限Password (password)是连接密码Cluster (cluster)是Lakehouse 集群名Data Plane (dataPlane)是数据平面名称Catalog (catalog)否数据源目录限定采集范围Database Schema (databaseSchema)否限定采集的数据库Schema必填字段的约束同时体现在连接 Schema 定义 iometeConnection.json 中其required数组明确列出了hostPort、username、password、cluster、dataPlane五个必填项。Host and PortIOMETE 服务的 Host。可以通过host:port格式附带端口例如dev.iomete.cloud:443。如果未指定端口默认使用443。这一默认行为在源码中得到明确印证在 connection.py 的get_connection_url中hostPort若包含:则拆分为 host 与端口端口必须为数字否则抛出ValueError否则端口固定为443。单元测试 test_iomete.py 也验证了“未提供端口时默认 443”的行为。Username用于连接 IOMETE 的用户名。该用户需要具备读取 IOMETE 中全部元数据的权限否则在连接测试或采集阶段可能因权限不足而失败。Password连接 IOMETE 的密码。在连接 Schema 定义中该字段声明了format: passwordOpenMetadata 会将其作为敏感信息处理。在源码构建 URL 时密码通过connection.password.get_secret_value()获取并以密文方式写入连接配置。Cluster要连接的 IOMETE Lakehouse 集群名称。该值会作为cluster查询参数拼接到连接 URL 中。Data PlaneIOMETE 数据平面Data Plane名称。该值会作为data_plane查询参数拼接到连接 URL 中例如default。源码中cluster与data_plane两个查询参数的注入逻辑见 connection.py仅当对应字段非空时才写入query字典。测试用例 test_iomete.py 分别断言了clusterdwh与data_planespark-resources会出现在最终 URL 的查询参数中。Catalog数据源的目录Catalog例如spark_catalog。这是一个可选参数如果提供元数据采集会被限制在该目录内如果留空OpenMetadata 将扫描默认目录。在源码实现中Catalog 承担了普通数据库连接中“database”的角色。IometeSource重写了get_database_names当service_connection.catalog已配置时直接返回该 Catalog见 metadata.py测试 test_iomete.py 验证了配置时返回[spark_catalog]、未配置时回退到基类并返回[default]两种分支。同时set_inspector被重写为设置catalog字段而非基类默认的database字段并重建连接与 Inspector 缓存metadata.py。原因正如源码注释所述IometeConnection没有database字段必须通过catalog让方言将查询限定在指定目录。这解释了为何在 URL 构建时 Catalog 会被作为 SQLAlchemy URL 的database部分传入URL.create(..., databaseconnection.catalog ...)对应的测试断言位于 test_iomete.py。Database SchemaIOMETE 的数据库Schema用于将元数据采集限制在指定范围内例如default、finance_db。这是一个可选参数如果填写只采集该 Schema 下的对象如果留空OpenMetadata 会尝试扫描 Catalog 中的所有 Schema。需要特别说明的是 IOMETE 与 OpenMetadata 的模型映射关系。连接 Schema 定义中对此有明确描述在 IOMETE 中一个 database 对应 OpenMetadata 中的一个 Schema。因此该参数在 OpenMetadata 侧会被解释为 Schema 级过滤条件。此外连接 Schema 还提供了两个基于正则的过滤模式schemaFilterPattern仅包含/排除匹配模式的 IOMETE 数据库例如default、finance_dbtableFilterPattern仅包含/排除匹配模式的表。两者与databaseSchema配合使用可以实现从 Catalog → Schema → Table 的多级精细化采集范围控制。连接测试与故障排查创建 IOMETE 服务后建议先执行“测试连接”Test Connection再启动元数据摄取工作流。OpenMetadata 的自动化测试框架会依次执行上文提到的CheckAccess、GetSchemas、GetTables与GetViews四个步骤。其中CheckAccess失败时重点检查 host/port、凭据、cluster 与 data plane 是否正确以及目标端口443是否可达GetSchemas/GetTables失败时重点检查 IOMETE 用户是否具备读取元数据的足够权限GetViews为可选步骤某些环境或方言实现可能不支持视图枚举此时该步骤失败不会阻断整体测试。在实现层面连接测试最终由 connection.py 的test_connection方法委托给通用的test_connection_db_schema_sources执行默认超时时间为 3 分钟THREE_MIN。该通用实现会访问service_connection.databaseSchema字段因此单元测试 test_iomete.py 特别断言了即使未设置databaseSchema与catalog字段也必须在模型中存在以避免连接测试阶段抛出AttributeError。元数据采集流程与行为细节启动 IOMETE 元数据摄取工作流后IometeSource的采集流程大致如下目录Catalog枚举若配置了catalog则直接使用该值否则回退到默认目录Schema 枚举在选定 Catalog 内扫描 Schema可通过databaseSchema或schemaFilterPattern限定范围表与视图采集对每个 Schema 枚举表与视图并通过tableFilterPattern过滤DDL 抓取get_schema_definition会根据采集配置决定是否抓取视图/表的 DDLmetadata.py当source_config.includeDDL为真或对象类型为 View / MaterializedView 时调用inspector.get_view_definition获取定义并去除首尾空白若底层方言抛出NotImplementedError或其它异常则记录告警并返回None不会中断整个采集流程。关于 DDL 抓取行为的健壮性单元测试做了充分覆盖NotImplementedError与任意异常都会被吞掉并返回Nonetest_iomete.pyView 类型能正确返回 DDLtest_iomete.py且 DDL 字符串会被去除首尾空白test_iomete.py。此外IometeSource.create会校验连接配置类型必须为IometeConnection否则抛出InvalidSourceExceptionmetadata.py这一行为也有对应测试test_iomete.py。血缘采集则由IometeLineageSource负责其类型校验逻辑与元数据源保持一致。总结IOMETE 连接器是 OpenMetadata 数据目录能力在 Spark Lakehouse 场景下的重要补充。配置时需重点把握以下几点hostPort、username、password、cluster、dataPlane五个字段必填其中hostPort缺省端口时默认443cluster与dataPlane会作为 URL 查询参数传给底层iometeSQLAlchemy 方言catalog决定采集的目录范围在 IOMETE 中充当 database 角色留空时扫描默认目录databaseSchema决定采集的 Schema 范围留空时扫描 Catalog 下全部 Schema且 IOMETE 的 database 在 OpenMetadata 中被建模为 Schema创建服务后务必先运行连接测试按CheckAccess→GetSchemas→GetTables→GetViews的步骤逐项排查网络连通与权限问题。如需深入源码可继续阅读 connection.py、metadata.py、连接 Schema 定义 iometeConnection.json 以及配套单元测试 test_iomete.py。【免费下载链接】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),仅供参考