ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

OpenMetadata Cassandra 连接器配置指南:从本地集群到 DataStax Astra DB 的元数据接入

2026/9/15 2:15:59 拓冰建站 浏览量
OpenMetadata Cassandra 连接器配置指南:从本地集群到 DataStax Astra DB 的元数据接入 OpenMetadata Cassandra 连接器配置指南从本地集群到 DataStax Astra DB 的元数据接入【免费下载链接】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 中接入 Apache Cassandra 元数据的开发者完整讲解 Cassandra 连接器的权限要求、连接参数用户名密码、Host Port、Cloud Config、超时、Token、Secure Connect Bundle、SSL 等的配置方法与底层语义并结合仓库源码说明连接建立、元数据抽取、列类型映射与连接测试的实现原理。读完本文你将能够独立完成本地 Cassandra 与 DataStax Astra DB 云实例两种场景的连接配置、YAML 工作流编写与故障排查。Cassandra 连接器在 OpenMetadata 中的定位Cassandra 连接器属于 OpenMetadata 的 Database 类连接器负责把 Cassandra 集群中的 Keyspace命名空间、Table 与 Materialized View物化视图的元数据抽取并同步到 OpenMetadata供数据目录、血缘分析、数据资产检索等能力消费。从连接器的注册实现看Cassandra 被封装为一个DefaultDatabaseSpec同时绑定元数据抽取、无 SQL 采样与 Profiling 三类能力service_spec.pyServiceSpec DefaultDatabaseSpec( metadata_source_classCassandraSource, profiler_classNoSQLProfilerInterface, sampler_classNoSQLSampler, connection_classCassandraConnection, )其连接配置的 JSON Schema 定义位于 cassandraConnection.json服务类型固定为Cassandra并声明了supportsMetadataExtraction支持元数据抽取能力。前置权限要求Requirements使用 Cassandra 连接器抽取元数据前需要确保连接所用的用户在 Cassandra 侧具备以下权限读权限Read Permissions能够查询表并执行数据抽取Schema 操作权限Schema Operations能够列出并描述 Keyspace 和 Table。从实现角度印证抽取过程依赖对 Cassandra 系统表system_schema的查询见 queries.pySELECT * FROM system_schema.keyspaces枚举 KeyspaceSELECT * FROM system_schema.tables WHERE keyspace_name %s枚举指定 Keyspace 下的表SELECT * FROM system_schema.views WHERE keyspace_name %s枚举物化视图SELECT * FROM system_schema.columns WHERE keyspace_name %s AND table_name %s获取列定义SELECT release_version FROM system.local读取集群版本用于连接测试。因此用于接入的 Cassandra 账号必须对system_schema与system.local具备读取权限否则元数据抽取与连接测试都会失败。Connection Details 连接参数详解以下参数即 OpenMetadata UI 中创建 Cassandra Database Service 时呈现的连接表单字段与 JSON Schema 及源码一一对应。Username $(idusername)用于连接 Cassandra 的用户名。该用户必须拥有执行元数据抽取和表查询所需的权限即上一节所述权限。在 Schema 中对应username字段描述为should have privileges to read all the metadata in Cassandra。Password $(idpassword)用于连接 Cassandra 的密码。在 Schema 中属于authType的basicAuth分支basicAuth.json 的定义被authType引用。连接建立时用户名与密码会被封装为PlainTextAuthProvider传给驱动cluster_config[auth_provider] PlainTextAuthProvider( usernameconnection.username, passwordconnection.authType.password.get_secret_value(), )密码在模型中作为 Secret 类型处理.get_secret_value()避免在日志或 API 响应中明文泄露。Host Port $(idhostPort)指定 Cassandra 实例的主机与端口格式为hostname:port字符串例如localhost:9042。若 OpenMetadata 摄取服务运行在 Docker 中而 Cassandra 服务运行在宿主机localhost上则应使用host.docker.internal:9042作为取值否则容器内无法访问宿主机端口。从源码看本地模式下该值会被拆分为 contact point 与端口host, port connection.hostPort.split(:)然后构造Cluster(contact_points[host], portport)connection.py。若使用cassandrasrv连接方案Astra DB 云场景Schema 描述提示此字段只需填主机名。Cloud Config $(idcloudConfig)连接 DataStax Astra DB 云环境所需的配置项集合用于建立并维持到云端 Cassandra 实例的安全连接。当authType选择cloudConfig分支时启用其完整定义见 cloudConfig.json包含四个子参数connectTimeout、requestTimeout、token、secureConnectBundle分别见下文对应小节。源码中云模式的装配逻辑connection.py会读取这些字段构造 driver 的 cloud 配置cloud_config connection.authType.cloudConfig cluster_cloud_config { connect_timeout: cloud_config.connectTimeout, use_default_tempdir: True, secure_connect_bundle: cloud_config.secureConnectBundle, } profile ExecutionProfile(request_timeoutcloud_config.requestTimeout) auth_provider PlainTextAuthProvider(token, token.get_secret_value() if token else None)同时强制使用ProtocolVersion.V4与 Astra DB 兼容。Connect Timeout $(idconnectTimeout)建立到 Cassandra 新连接的超时时间单位为秒。该参数控制系统在创建新连接时最多等待多久超时即失败。云模式下对应 driver 的connect_timeout配置。若连接目标网络状况不佳可适当调大该值。Request Timeout $(idrequestTimeout)单个 Cassandra 请求查询或操作的超时时间单位为秒。该参数决定每个请求等待响应的最长时间。云模式下通过ExecutionProfile(request_timeout...)注入 driver 的默认执行配置。Token $(idtoken)连接 DataStax Astra DB 所需的应用令牌Application Token是访问云数据库实例的安全凭证在 Schema 中以format: password标记为敏感字段。源码中以token作为用户名、以 Token 值作为密码构造PlainTextAuthProvider完成认证。Secure Connect Bundle $(idsecureConnectBundle)指向 Secure Connect Bundle.zip文件的本地文件路径。该压缩包包含建立到 DataStax Astra DB 安全连接所需的证书与配置文件通常从 Astra DB 控制台下载。源码将其传给 driver 的secure_connect_bundle配置并配合use_default_tempdir: True让驱动自行解压使用。Database Name $(iddatabaseName)OpenMetadata 中 Database Service 的层级结构如下Database Service Database Schema Table由于 Cassandra 本身没有 Database / Keyspace 概念在 OpenMetadata 中被映射为 Schema 层级若不指定该字段数据会归入名为default的 Database 下如需自定义数据库名称在此字段填写即可。Schema 中描述为If left blank, we will use default as the database name。Connection Arguments $(idconnectionArguments)在连接期间额外传递给服务的连接参数键值对。源码中将其作为ssl_context的取值来源connection.pyconnection.connectionArguments connection.connectionArguments or init_empty_connection_arguments() cluster Cluster( **cluster_config, ssl_contextconnection.connectionArguments.root.get(ssl_context), )即当你需要自定义 TLS 上下文时可通过连接参数传入ssl_context键。SSL Mode $(idsslMode)连接 Cassandra 实例时使用的 SSL 模式默认禁用 SSL。该字段引用 verifySSLConfig.json 中的sslMode枚举定义。仓库内置的摄取工作流示例cassandra.yaml展示了sslMode: allow的用法可参照该示例选择符合部署要求的模式。SSL Configuration $(idsslConfig)当 SSL Mode 启用时必填的 SSL 配置包含三个证书相关字段CA CertificateCA 证书文件路径caCertificateSSL Certificate客户端证书文件路径sslCertificateSSL Key客户端私钥文件路径sslKey。该配置同样引用 verifySSLConfig.json 中的sslConfig定义。完整摄取工作流配置示例以下为仓库内置的 Cassandra 摄取工作流示例ingestion/src/metadata/examples/workflows/cassandra.yaml展示了本地模式与 Astra DB 云模式注释部分的完整 YAML 写法source: type: cassandra serviceName: local_cassandra serviceConnection: config: type: Cassandra databaseName: custom_database_name username: cassandra authType: password: cassandra # cloudConfig: # secureConnectBundle: SCB File Path # token: Token String # requestTimeout: Timeout in seconds # connectTimeout: Timeout in seconds # sslMode: allow # sslConfig: # caCertificate: CA certificate content # sslCertificate: SSL certificate content # sslKey: SSL key content hostPort: localhost:9042 sourceConfig: config: type: DatabaseMetadata includeTables: true sink: type: metadata-rest config: {} workflowConfig: # loggerLevel: INFO # DEBUG, INFO, WARN or ERROR openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: your-jwt-token关键点说明serviceName在 OpenMetadata 中注册的服务名称type: cassandrasource 类型标识与连接器注册名一致databaseName: custom_database_name自定义数据库名省略则使用defaultauthType二选一password对应本地认证cloudConfig对应 Astra DB 云认证sourceConfig.config.type: DatabaseMetadata表示执行数据库元数据摄取Metadata IngestionincludeTables: true摄取表信息workflowConfig.openMetadataServerConfigOpenMetadata 服务端地址与认证信息生产环境请使用服务端生成的 JWT勿使用示例令牌。元数据抽取的源码级实现抽取主流程CassandraSource继承自CommonNoSQLSource以 NoSQL 风格完成元数据抽取metadata.pyget_schema_name_list()通过CASSANDRA_GET_KEYSPACES查询system_schema.keyspaces把每个keyspace_name作为 OpenMetadata 的 Schema 名query_table_names_and_types(schema_name)通过CASSANDRA_GET_KEYSPACE_TABLES查询指定 Keyspace 下的表封装为TableNameAndTypequery_view_names_and_types(schema_name)通过CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS查询system_schema.views并将结果标记为TableType.MaterializedView物化视图get_table_columns(schema_name, table_name)通过CASSANDRA_GET_TABLE_COLUMNS查询列信息交给CassandraColumnParser.parse转换为 OpenMetadata 的Column。所有查询均在try/except中执行失败时记录 debug 日志而不中断整个工作流保证单个 Keyspace/Table 异常不影响整体摄取。Cassandra 类型到 OpenMetadata 类型的映射CassandraColumnParserhelpers.py维护了一张 Cassandra 原生类型到 OpenMetadataDataType的映射表覆盖了常用标量类型与集合类型Cassandra 类型OpenMetadata DataTypeascii / varintSTRINGbigintBIGINTblobBLOBbooleanBOOLEANdateDATEdecimalDECIMALdoubleDOUBLEdurationINTERVALfloatFLOATuuid / timeuuidUUIDinetINETintINTlistARRAYmapMAPsetSETsmallintSMALLINTtextTEXTtimeTIMEtimestampTIMESTAMPtinyintTINYINTtupleTUPLEstructSTRUCT解析器会递归处理frozen...、list...、map...等复合类型外层类型解析为主dataType尖括号内的元素类型解析为arrayDataType无法识别的类型回退为UNKNOWN原始类型字符串保留在dataTypeDisplay中用于展示。连接测试Test Connection创建服务时 OpenMetadata 会执行连接测试其步骤定义于 connection.py 的test_connection方法依次验证四类能力CheckAccess执行SELECT release_version FROM system.local验证账号可访问集群GetSchemas执行CASSANDRA_GET_KEYSPACES并取第一个 Keyspace 作为后续测试的 Schema 上下文GetTables执行CASSANDRA_GET_KEYSPACE_TABLES验证可列出表GetViews执行CASSANDRA_GET_KEYSPACE_MATERIALIZED_VIEWS验证可列出物化视图。这些测试即对应上文权限要求缺少读权限或 Schema 操作权限时对应步骤会失败并给出明确诊断。连接测试同样支持通过 Automation Workflow自动化工单触发测试超时默认 3 分钟THREE_MIN。仓库配套的单元测试见 test_connection.py 与 test_cassandra.py可用于本地验证连接测试与元数据拓扑逻辑。两种部署场景的配置对照配置项本地 CassandraDataStax Astra DB云hostPortlocalhost:9042Docker 中为host.docker.internal:9042仅主机名cassandrasrv方案或省略authTypepassword用户名 密码cloudConfigtoken secureConnectBundlesecureConnectBundle不需要必填指向.zip文件路径token不需要必填Astra DB 应用令牌connectTimeout / requestTimeout非云场景下不生效生效单位为秒SSL可选通过 sslMode / sslConfig 配置由 Secure Connect Bundle 内证书保证小结Cassandra 连接器是 OpenMetadata 覆盖 NoSQL 生态的重要组成通过系统表system_schema完成 Keyspace、表、物化视图与列的元数据抽取并支持本地密码认证与 DataStax Astra DB 云令牌认证两种接入模式。配置时只需把握三条主线一是保证账号对system_schema/system.local的读权限二是区分本地hostPort与云cloudConfig两套参数体系三是按需启用sslMode/sslConfig并在云场景准备 Secure Connect Bundle。结合仓库中的 cassandra.yaml 示例与 cassandraConnection.json Schema即可快速完成连接器接入与元数据同步。【免费下载链接】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),仅供参考