OpenMetadata SingleStore 数据库连接器完整配置指南:从权限准备到元数据摄取
OpenMetadata SingleStore 数据库连接器完整配置指南从权限准备到元数据摄取【免费下载链接】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 仓库中 SingleStore 连接器的官方配置文档SingleStore.md为核心系统讲解如何为 SingleStore 数据库配置元数据摄取包括数据库账号权限的准备工作、连接配置中每一项参数的含义与取值建议以及摄取工作流的完整 YAML 写法。读完本文你将能够独立完成从 SingleStore 权限授予、连接器配置到元数据、血缘与 Profiler 工作流运行的全过程。一、SingleStore 连接器在 OpenMetadata 中的定位SingleStore 是 OpenMetadata 支持的数据库类连接器之一用于将 SingleStore 中的库、表、视图等元数据抽取到 OpenMetadata 平台进而支撑数据目录、数据血缘、Profiler 与数据质量等上层能力。从 service_spec.py 的源码结构可以看出SingleStore 连接器的实现由四部分组装而成元数据摄取SinglestoreSource继承自CommonDbSourceService负责抽取库表元数据血缘摄取SinglestoreLineageSource实现视图血缘view lineageProfiler 支持SingleStoreProfilerInterface提供 SQLAlchemy 层面的 Profiler 接口连接模型SingleStoreConnection定义连接参数与连接测试逻辑。ServiceSpec DefaultDatabaseSpec( metadata_source_classSinglestoreSource, profiler_classSingleStoreProfilerInterface, lineage_source_classSinglestoreLineageSource, connection_classSingleStoreConnection, )因此本文档中的连接配置不仅服务于元数据摄取也同时作用于血缘和 Profiler 工作流。二、Requirements连接账号的权限准备2.1 元数据摄取的最小权限要成功抽取元数据连接配置中使用的用户必须能够访问INFORMATION_SCHEMA。默认情况下SingleStore 用户只能看到自己拥有访问权限的对象所对应的INFORMATION_SCHEMA行因此需要显式授予目标库/表的读取权限。官方文档给出以下 SQL 示例SingleStore.md-- 创建用户 -- 更完整的 CREATE USER 语法参见 SingleStore 官方文档 CREATE USER username[hostName] IDENTIFIED BY password; -- 授予某个数据库的 SELECT 权限 GRANT SELECT ON world.* TO username; -- 授予某个数据库的 SELECT 权限 GRANT SELECT ON world.* TO username; -- 授予某个具体对象的 SELECT 权限 GRANT SELECT ON world.hello TO username;要点说明CREATE USER中的[hostName]为可选部分用于限定用户可从哪些主机连接若不加主机名用户可以从任意主机访问。最小权限原则下只需授予元数据摄取所涉及库表的SELECT权限即可无需管理员权限。2.2 Profiler 与数据质量所需的额外权限运行Profiler 工作流或数据质量测试时所使用的用户还需要对将要执行 Profiler/测试的表或 Schema 拥有SELECT权限。也就是说只做了 2.1 节的基础授权还不足以支撑 Profiler 与数据质量工作流需要按实际执行范围扩展授权。这一要求在源码层面同样得到印证SingleStore 的 Profiler 由SingleStoreProfilerInterface提供而连接与测试逻辑统一走test_connection_db_schema_sources见 connection.py数据库类源的连接测试对权限的校验正是建立在INFORMATION_SCHEMA与目标表可读的基础上。三、Connection Details连接参数逐项详解以下参数对应 OpenMetadata UI 中新建 SingleStore 数据库服务时的“Connection Details”配置表单每一项的id用于表单字段与文档锚点的绑定。3.1 SchemeidschemeSQLAlchemy 驱动的 scheme 选项。如果不确定使用默认值即可。从单元测试 test_connection.py 可以看到实际使用的 scheme 枚举值为SingleStoreScheme.mysql_pymysql最终生成的连接串为mysqlpymysql://openmetadata_user:openmetadata_passwordlocalhost:3306/openmetadata_db这说明 SingleStore 连接器底层基于 SQLAlchemy 的 MySQL dialectpymysql 驱动来建立连接scheme 字段决定了驱动 URL 的前缀部分。3.2 Usernameidusername用于连接 SingleStore 的用户名。该用户需要能访问INFORMATION_SCHEMA以抽取元数据其他工作流如 Profiler、数据质量可能需要不同的权限详见上文“Requirements”一节。3.3 Passwordidpassword连接 SingleStore 时使用的密码。3.4 Host PortidhostPortSingleStore 实例的主机与端口格式为hostname:port。例如localhost:3306。Docker 场景特别提示如果 OpenMetadata 摄取进程运行在 Docker 容器中而 SingleStore 服务托管在宿主机localhost上则应使用host.docker.internal:3306作为取值以便容器内访问宿主机的服务。3.5 Database NameiddatabaseNameOpenMetadata 的 Database Service 层级结构为Database Service Database Schema Table在 SingleStore 场景下实际上并不存在传统意义上的“Database”这一层。如果你希望数据以default之外的名字展示可以在该字段指定一个名称。3.6 Database SchemaiddatabaseSchema可选参数。设置后将把元数据读取范围限制到与该字段值对应的单一数据库留空时OpenMetadata 会扫描全部数据库。注意示例工作流 singlestore.yaml 中databaseSchema: custom_database_name与单元测试中databaseSchemaopenmetadata_db都验证了该字段会直接拼入 SQLAlchemy 连接 URL 的数据库路径段...localhost:3306/openmetadata_db因此它实际上充当了 SQLAlchemy URL 中的 database 部分用于限定连接与读取范围。3.7 Connection OptionsidconnectionOptions额外的连接选项用于构建发送给服务的连接 URL。适用于需要在 URL 中追加查询参数如字符集、超时等的场景。3.8 Connection ArgumentsidconnectionArguments额外的连接参数例如安全或协议相关的配置会在连接时传递给服务。典型用途包括传递 SQLAlchemyconnect_args中的 SSL 配置等。四、端到端实践完整摄取工作流配置将上述参数落到实际运行中一份可直接参考的 SingleStore 元数据摄取工作流 YAML 位于 ingestion/src/metadata/examples/workflows/singlestore.yaml核心结构如下source: type: singlestore serviceName: local_singlestore serviceConnection: config: type: SingleStore username: openmetadata_user password: openmetadata_password hostPort: localhost:3306 databaseSchema: custom_database_name sourceConfig: config: type: DatabaseMetadata sink: type: metadata-rest config: {} workflowConfig: # loggerLevel: INFO # DEBUG, INFO, WARN or ERROR openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: eyJraWQiOi...字段速查字段取值示例说明source.typesinglestore源类型标识固定为 singlestoreserviceConnection.config.typeSingleStore服务连接配置类型username/passwordopenmetadata_user/openmetadata_password具备INFORMATION_SCHEMA访问权限的账号hostPortlocalhost:3306主机与端口Docker 内访问宿主机用host.docker.internal:3306databaseSchemacustom_database_name可选限定读取单一数据库留空则扫描全部sourceConfig.config.typeDatabaseMetadata工作流类型此处为元数据摄取sink.typemetadata-rest将摄取结果写入 OpenMetadata APIworkflowConfig.openMetadataServerConfig.hostPorthttp://localhost:8585/apiOpenMetadata 服务地址workflowConfig.loggerLevelINFO可选日志级别DEBUG / INFO / WARN / ERROR运行方式将该 YAML 保存为本地文件通过 OpenMetadata 的 ingestion CLI 或 Airflow 调度执行元数据摄取工作流摄取前可用“Test Connection”校验连通性底层对应 connection.py 中的test_connection超时默认 3 分钟。五、底层原理与实现佐证连接建立connection.py 中_get_client通过BasicAuthStrategy基于SingleStoreConnection配置构建 SQLAlchemyEngine即用户名/密码的基础认证方式。类型校验与元数据抽取metadata.py 中SinglestoreSource.create会对传入配置做严格类型检查非SingleStoreConnection直接抛出InvalidSourceException同时该模块通过复用 MySQL dialect 的ischema_names与MySQLTableDefinitionParser并覆盖_parse_column来解析 SingleStore 表结构因为 SingleStore 与 MySQL 高度兼容。血缘lineage.py 中SinglestoreLineageSource继承LineageSource实现视图级血缘抽取。连接串验证单元测试 test_connection.py 断言了scheme username password hostPort databaseSchema组装出的最终 URL 形态可作为配置正确性的直接判据。六、常见问题与排查建议元数据抽取为空优先检查连接账号对目标库表是否有SELECT权限以及是否可读取INFORMATION_SCHEMA默认只能看到有权限的对象。Docker 环境连不上确认hostPort是否使用了host.docker.internal替代localhost。只看到部分数据库检查databaseSchema是否被设置——设置了该字段后只会摄取与该值对应的单一数据库需要全量扫描时应留空。Profiler/数据质量任务失败除基础SELECT外确认用户对执行范围内的表/Schema 具备SELECT权限。连接测试失败可先核对 scheme 默认值是否被改动再确认hostPort格式为hostname:port如localhost:3306。【免费下载链接】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),仅供参考