
DataHub 接入 Vertica 元数据摄取完全指南能力矩阵、配置详解与故障排查【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub导读本文围绕 DataHub 官方 Vertica 摄取模块verticasource展开系统梳理该模块支持摄取的核心元数据实体数据库、Schema、表、视图、Projection、ML 模型、能力边界与限制、完整可运行的配置示例并结合仓库源码与集成测试说明每项配置背后的实现原理以及当摄取失败时应遵循的排查路径。读完本文你将能够独立编写 Vertica → DataHub 的摄取 Recipe、按需裁剪能力开关并快速定位常见摄取问题。模块概览Vertica 元数据摄取到 DataHubVertica 是用于存储和查询分析型或操作型数据的列式分析数据库。DataHub 的vertica模块负责把 Vertica 中的元数据摄取进 DataHub形成可搜索、可治理的元数据资产。从模块说明文档 vertica_pre.md 可以看到该插件Plugin面向生产环境的摄取工作流提取的内容包括数据库Database、Schema、视图View、表Table、Projection的元数据表级血缘Table level lineageML 模型ML Models元数据从 README.md 的 Overview 来看该集成还覆盖了 schema 字段、容器container层级并支持表级/列级血缘、数据画像data profiling以及基于有状态摄取stateful ingestion的删除检测。概念映射原文档将 Vertica 源概念与 DataHub 概念做了如下映射这是理解摄取产物在 DataHub 中如何落地的关键源概念Source ConceptDataHub 概念DataHub Concept备注Vertica平台Data Platform对应urn:li:dataPlatform:vertica表TableDataset摄取为 Dataset 实体视图ViewDataset摄取为 Dataset 实体ProjectionDataset摄取为 Dataset 实体并带有PROJECTIONS子类型关于 DataHub 中实体Entity与数据集Dataset的通用概念可参考 docs/what/entity.md。从集成测试的黄金文件 vertica_mces_with_db_golden.json 可以看到实际的 MCE 产物形态数据库和 Schema 会以container实体落库包含containerProperties携带platform、env、database、schema等自定义属性、status、dataPlatformInstance、subTypes如Database和browsePathsV2等 aspect。前置条件根据 vertica_pre.md 的 Prerequisites 章节使用该模块前需要满足Vertica Server版本为10.1.1-0 或更高更老版本可能可以工作但未经测试凭据Credentials需要用户名和密码用于连接数据库。快速开始最小可运行 Recipe仓库为 Vertica 模块提供了官方 Recipe 模板 vertica_recipe.yml内容如下可直接作为配置起点source: type: vertica config: # Coordinates host_port: localhost:5433 database: DATABASE_NAME # Credentials username: ${VERTICA_USER} password: ${VERTICA_PASSWORD} include_tables: true include_views: true include_projections: true include_models: true include_view_lineage: true include_projection_lineage: true sink: # sink configs将DATABASE_NAME替换为实际数据库名并通过环境变量注入VERTICA_USER与VERTICA_PASSWORD避免明文凭据。保存为recipe.yml后通过 CLI 执行datahub ingest -c recipe.yml集成测试 test_vertica.py 使用类似配置执行datahub ingest --strict-warnings -c config并校验输出结果验证了该配置形态的有效性。配置参数详解连接与坐标参数Vertica 连接配置继承自 DataHub SQL 源的通用配置BasicSQLAlchemyConfig定义于 sql_config.py核心参数包括参数说明示例host_portVertica 服务器地址与端口默认端口为 5433。配置类中的clean_host_port校验器会自动剥离协议前缀如https://localhost:5433database目标数据库名称Vmartusername/password连接凭据${VERTICA_USER}/${VERTICA_PASSWORD}从源码 vertica.py 可见VerticaConfig将连接 scheme 固定默认为verticavertica_python即使用vertica_python驱动建立 SQLAlchemy 连接。单元测试 test_vertica_source.py 验证了最终生成的 SQLAlchemy URL 形态verticavertica_python://user:passwordhost:5433/db实体摄取开关Vertica 特有配置vertica模块在通用 SQL 配置之上扩展了VerticaConfigvertica.py新增了以下专属配置项这是 Recipe 中include_*系列开关的来源参数默认值说明include_projectionstrue是否摄取 ProjectionVertica 特有的物化存储对象include_modelstrue是否摄取 ML 模型models_pattern允许全部用于过滤 ML 模型的正则AllowDenyPattern格式如allow: [.*]、deny: [^test_.*]include_view_lineagetrue是否摄取视图View血缘include_projection_lineagetrue是否摄取 Projection 血缘此外通用 SQL 配置还提供了include_tables、include_views、include_view_column_lineage、table_pattern、schema_pattern、view_pattern等过滤与开关项。集成测试配置 vertica_to_file.yml 中即同时开启了include_view_column_lineage: true说明视图列级血缘也被支持。在get_workunits_internalvertica.py的实现中摄取流程按数据库容器 → Schema 容器 → Projection → ML 模型 → Profiling 请求的顺序依次产出 WorkUnitinclude_projections/include_models开关直接决定对应循环是否执行。数据画像Profiling与 DataHub 其他 SQL 源一致Vertica 模块支持可选的 Profiling 能力。当is_profiling_enabled()为真时loop_profiler_requestsvertica.py会为表及 Projection 生成画像请求并遵循profiling.partition_profiling_enabled、partition_datetime等通用画像配置。从源码结构看Projection 的画像请求同样受分区partition检测逻辑约束若分区表为空或分区 ID 无效会跳过画像并在报告中记录 warning。能力矩阵支持的功能与开关关联文档 vertica_post.md 的 Capabilities 章节指出以模块文档页上方的 Important Capabilities 表格作为支持特性的权威来源该能力表对应 vertica_pre.md 模块页面上的能力声明。能力声明在源码中通过装饰器体现VerticaSourcevertica.py标注的能力如下能力状态与开关PLATFORM_INSTANCE平台实例默认启用通过platform_instance配置DOMAINS域通过domain配置字段支持DATA_PROFILING数据画像可选启用通过 profiling 相关配置LINEAGE_COARSE粗粒度血缘默认启用可通过include_view_lineage与include_projection_lineage关闭细分子类型为 View 与 ProjectionsDELETION_DETECTION删除检测默认通过有状态摄取stateful ingestion启用同时模块标注为SupportStatus.GA即处于正式发布GA支持状态。四大实体摄取实现解析结合源码理解各实体的摄取逻辑有助于判断配置开关的实际效果。表Table与 Schema 字段表摄取复用通用SQLAlchemySource的_process_table流程并在此基础上额外提取表所有者ownerVerticaSource._process_tablevertica.py通过inspector.get_table_owner(table, schema)获取表属主并将其作为corpuser所有者写入 Dataset 实体。视图View与视图血缘loop_viewsvertica.py遍历 Schema 内所有视图视图名会先经过view_pattern过滤不符合规则的被丢弃report_dropped单个视图摄取失败时仅记录 warning 并继续不会中断整个 Schema 的摄取当include_view_lineage开启时调用inspector._populate_view_lineage(view, schema)获取视图的上游表构造UpstreamLineage血缘类型为TRANSFORMED写入实体vertica.py。Projection 与其血缘Projection 是 Vertica 特有的存储对象——建表时会自动创建一个 super projection 来存储数据。loop_projectionsvertica.py与_process_projectionsvertica.py负责其摄取使用projections_seen集合去重避免重复摄取复用table_pattern进行过滤提取 Projection 的注释文本与属性如投影类型 super/segmented、分区键、分段信息等见get_projection_propertiesvertica.py解析主键约束与外键生成 SchemaMetadata为实体打上DatasetSubTypes.PROJECTIONS子类型标签当include_projection_lineage开启时通过_populate_projection_lineage生成 Projection → 上游表的血缘vertica.py。ML 模型Vertica 内置了机器学习能力loop_modelsvertica.py与_process_modelsvertica.py负责 ML 模型元数据摄取通过inspector.get_models_names(schema)枚举模型models_pattern参与过滤提取模型注释与属性如模型属性、模型规格信息见get_model_propertiesvertica.py以ML Models子类型标记实体并挂载到对应的 Schema 容器下。限制说明Limitationsvertica_post.md 的 Limitations 章节明确指出模块行为受源端 API、权限以及平台暴露的元数据范围约束对于不支持或有条件的特性应以上述能力表格中的说明为准。结合源码可以补充以下具体边界视图血缘依赖 Vertica 提供视图定义信息通过_populate_view_lineage若视图定义无法解析出上游表则不会产出血缘源码中会记录 No lineage found 日志并返回NoneProjection/模型的注释与属性获取依赖 SQLAlchemy inspector 的get_projection_comment、get_model_comment接口若底层驱动未实现抛NotImplementedError则仅返回空属性而不报错中断vertica.py数据库与 Schema 的额外属性extra_properties获取失败时会在报告中记录 failure但不会中断整个摄取vertica.pyVertica Server 版本要求 10.1.1-0 及以上旧版本未经过测试验证。故障排查指南Troubleshootingvertica_post.md 给出的排查主线为若摄取失败先验证凭据、权限、连通性和作用域过滤scope filters再检查摄取日志中的源特有错误并据此调整配置。具体展开如下凭据Credentials确认username/password正确且环境变量已注入可先在 Vertica 侧用vsql手动连接验证集成测试即通过vsql -w abc123执行 DDL见 test_vertica.py。权限Permissions确认账号拥有读取系统目录catalog的权限能列出目标 Schema 的表、视图、Projection 与模型——权限不足通常表现为枚举结果为空或查询系统表报错。连通性Connectivity确认host_port可达、端口默认 5433开放、网络与防火墙规则允许连接注意host_port会被自动剥离协议前缀不要写成带http://的地址。作用域过滤Scope filters检查schema_pattern、table_pattern、view_pattern、models_pattern是否误过滤了目标对象被过滤的对象会在报告中以 dropped 形式记录源码中report_dropped调用点见 vertica.py。日志排查摄取报告SQLSourceReport的扩展VerticaSourceReport见 vertica.py会统计projection_scanned、models_scanned等扫描计数以及 warning / failure 明细。日志中的Ingestion error、Projection error、Model error、Views error等上下文信息可用于定位是哪个对象、哪个环节失败。验证与回归测试仓库为 Vertica 模块提供了完整的测试覆盖可作为验证配置正确性的参考单元测试test_vertica_source.py验证VerticaConfig的 SQLAlchemy URL 生成逻辑集成测试test_vertica.py通过 Docker 启动vertica/vertica-ce社区版容器执行 DDL 造数运行datahub ingest --strict-warnings摄取并将输出与黄金文件 vertica_mces_with_db_golden.json 比对对create_time、table_size、Projection_size、ROS_Count、cluster_size、udx_language等运行时动态属性做了忽略处理。注意该集成测试当前因 Vertica 官方容器镜像的已知问题被标记为 skip见 test_vertica.py 中的注释链接在本地复现时需关注镜像可用性。总结vertica模块是 DataHub 中面向 Vertica 分析数据库的完整摄取方案它以verticavertica_python驱动连接数据库支持数据库/Schema/表/视图/Projection/ML 模型等元数据实体的摄取提供视图与 Projection 血缘、数据画像、有状态删除检测等增强能力所有能力均可通过 Recipe 中的开关精确控制。当遇到摄取问题时按照凭据 → 权限 → 连通性 → 作用域过滤 → 日志的顺序排查并结合模块报告中的扫描计数与错误上下文即可快速定位根因。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考