ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DataHub Informatica (IDMC) 连接器:从 Project/Taskflow 到 DataFlow 血缘的完整映射指南

DataHub Informatica (IDMC) 连接器:从 Project/Taskflow 到 DataFlow 血缘的完整映射指南 DataHub Informatica (IDMC) 连接器从 Project/Taskflow 到 DataFlow 血缘的完整映射指南【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahubDataHub 的informatica采集源负责从 Informatica Intelligent Data Management Cloud (IDMC) 抽取 Project、Folder、Taskflow、Mapping Task 等元数据并通过 IDMC v3 Export API 解析出表级血缘table-level lineage。本文以 Informatica 连接器文档 为核心骨架结合 连接器源码 与测试用例展开读完你可以掌握服务账号权限配置、完整 recipe 参数、三层过滤策略、Taskflow 步骤 DAG 折叠成 DataJob 链的实现原理以及血缘未解析时的排障路径。1. 连接器覆盖范围与概念映射IDMC 是一个云原生数据集成与管理平台。DataHub 的 Informatica 集成将 IDMC 对象映射为 DataHub 实体官方文档README 与 informatica_pre.md给出的概念映射如下IDMC 概念DataHub 概念SubType备注informatica平台Data Platform—平台标识ProjectContainerProject组织顶层容器FolderContainerFolder项目下文件夹TaskflowDataFlow 一个orchestrateDataJobTaskflow/Taskflow Orchestrationorchestrate 位于链尾inputDatajobs [最后一个 MT]Mapping Task (MT)DataFlow 内部transformDataJobMapping Task/Task Logic各 MT 按 Taskflow 步骤顺序经inputDatajobs相互链接Mapping不作为独立实体输出—仅 Mapping Task可运行调度对象被输出所引用的 Mapping 通过customProperties暴露Mapplet不输出—属于被其他 Mapping 包含的内部子映射跳过Source/TargetDataset—构成上下游血缘外部数据集 URN 会收到最小Statusstub从而能在线索搜索中解析关键设计决策见 informatica_pre.mdMapping Tasks 才是 IDMC 中真正可运行的调度对象所以连接器把 MT 作为一等实体输出。每个 MT 内部的transformDataJob 携带dataJobInputOutputaspect其源/目标表由该 MT 引用的 Mapping 解析而来——跨源血缘最终落在用户真正调度、运维的对象上。无 Mapping Task 的孤立 Mapping 不输出它本身无法独立运行Mapplet 也不输出。但被引用 Mapping 的友好名、v2 id、v3 GUID 仍会通过customProperties.mappingName/mappingId/mappingV3Id暴露在每一个 MT 上方便从 DataHub 反向对照 IDMC。从源码看source.py 中定义了PLATFORM informatica与共享常量MAPPING_JOB_ID transform保证抽取阶段与血缘阶段生成的 DataJob URN 一致源码注释也明确声明普通 Mapping 与 Mapplet 是有意不输出的——只有可运行的 MT 才出现在 DataHub 中source.py#L144-L152。连接器在源码中通过装饰器声明了自身能力与Beta支持状态source.py#L134-L143能力说明PLATFORM_INSTANCE默认启用CONTAINERSProject 与 Folder 作为容器LINEAGE_COARSE基于 v3 Export API 的表级血缘DELETION_DETECTION通过 stateful ingestion 实现OWNERSHIP来自 IDMC 对象的createdBy/updatedByTAGSIDMC 对象标签作为 DataHub GlobalTag 输出TEST_CONNECTION默认启用datahub test-connection2. 前置条件权限与区域 Login URL2.1 所需 IDMC 权限能力IDMC 权限说明认证登录任意有效 IDMC 用户使用 v2 login 端点列举 Project / Folder / TaskflowAsset - read或 Observer 角色所有容器/流输出所需列举 Mapping / Mapping TaskAsset - readMapping Task 为可选403 时带警告跳过抽取表级血缘Asset - export提交 v3 export 作业设置extract_lineage: false可跳过列举 ConnectionConnection - read血缘解析到数据集 URN 所需2.2 区域 Login URLlogin_url应设置为 IDMC pod 的区域登录地址不是 API 运行时地址——连接器会从登录响应中自动发现运行时 API URL区域login_urlUShttps://dm-us.informaticacloud.comUS2https://dm2-us.informaticacloud.comEMEAhttps://dm-em.informaticacloud.comAPAChttps://dm-ap.informaticacloud.com源码中login_url默认值为 US 区且在 config.py 的校验器中强制要求https://前缀——IDMC 没有 http 端点在配置解析期拒绝明文传输凭据。2.3 快速上手创建服务账号——使用最小权限的专用 IDMC 用户权限见上表确认 pod URL——确定 IDMC 区域登录地址US / US2 / EMEA / APAC配置 recipe——以 informatica_recipe.yml 为模板运行采集——datahub ingest -c informatica_recipe.yml。3. 完整 Recipe 配置参考官方 recipe 模板informatica_recipe.yml包含全部配置项完整继承如下source: type: informatica config: # ------------------------------------------------------------------------- # Connection # ------------------------------------------------------------------------- # Regional login URL for your IDMC pod. The connector discovers the runtime # API URL from the login response. Common values: # US https://dm-us.informaticacloud.com # US2 https://dm2-us.informaticacloud.com # EMEA https://dm-em.informaticacloud.com # APAC https://dm-ap.informaticacloud.com login_url: https://dm-us.informaticacloud.com # IDMC service account. Prefer a dedicated user with the Observer role # plus Asset - export (required for lineage, see README). username: ${IDMC_USERNAME} password: ${IDMC_PASSWORD} # Optional: group entities into a platform instance if you ingest more than # one IDMC org/pod into the same DataHub instance. # platform_instance: idmc_prod # env: PROD # ------------------------------------------------------------------------- # Filtering — combine any or all three layers # ------------------------------------------------------------------------- # Layer 1 (recommended for large orgs): only ingest objects tagged in IDMC # with at least one of these names. Tags are matched exactly. # Applies to Projects, Folders, Taskflows, and Mapping Tasks only — # Mappings and Connections are always fetched in full regardless of this filter. # tag_filter_names: [datahub, critical] # Layer 2: filter by project/folder name (regex). # project_pattern: # allow: # - ^Production_.* # deny: # - .*_sandbox$ # folder_pattern: # allow: # - .* # Layer 3: filter by mapping/taskflow name (regex, applied across all matches). # mapping_pattern: # allow: # - .* # taskflow_pattern: # allow: # - .* # ------------------------------------------------------------------------- # Features # ------------------------------------------------------------------------- # Requires the Asset - export privilege on the service account. extract_lineage: true # Derives owners from IDMC createdBy/updatedBy fields. extract_ownership: true # Emits IDMC object tags as DataHub GlobalTags on Projects, Folders, # Taskflows, and Mapping Tasks. Defaults to true — tags will be ingested # even if this field is not specified. extract_tags: true # ------------------------------------------------------------------------- # Connection → platform overrides # ------------------------------------------------------------------------- # Use when IDMC reports a connection type the connector doesnt know about. # Keys are IDMC connection IDs; values are DataHub platform names. # connection_type_overrides: # 01DM180B000000000008: snowflake # ------------------------------------------------------------------------- # Performance (tune for large orgs) # ------------------------------------------------------------------------- # page_size: 200 # v3 objects per page (max 200) # export_batch_size: 1000 # mappings per export job (max 1000) # export_poll_timeout_secs: 300 # seconds to wait for an export job # export_poll_interval_secs: 5 # seconds between export polls # ------------------------------------------------------------------------- # Stateful ingestion — recommended for automatic stale-entity removal # ------------------------------------------------------------------------- stateful_ingestion: enabled: true sink: type: datahub-rest config: server: http://localhost:8080结合 config.py 中的 Pydantic 定义各参数的默认值与取值范围如下参数默认值约束说明login_urlhttps://dm-us.informaticacloud.com必须https://区域登录地址username/password—必填服务账号密码支持TransparentSecretStrplatform_instance/env——多 IDMC org 汇聚到同一 DataHub 实例时分组project_pattern/folder_patternallow all正则 allow/deny第二层过滤mapping_task_pattern/taskflow_patternallow all正则 allow/deny匹配folder_path/name可针对同名对象tag_filter_names[]精确匹配拒绝空白项第一层过滤推荐配置期即拒绝空标签config.py#L203-L214extract_lineagetrue—需要Asset - export权限走 v3 Export APIextract_ownershiptrue—从createdBy/updatedBy推导 Ownerstrip_user_email_domainfalse—生成 CorpUser URN 前去掉邮箱域名便于与 Okta/Azure AD 采集团队对齐extract_tagstrue—将 IDMC 标签输出为 GlobalTagconnection_type_overrides{}连接 ID → 平台名优先于内置映射表connection_type_platform_map{}类型串 → 平台名扩充内置CONNECTION_TYPE_MAP如新版 marketplace 连接器convert_urns_to_lowercasetrue—上游 URN qualifier 小写与 Snowflake/Postgres/BigQuery 源的默认行为对齐connection_to_platform_instance{}连接 ID → platform_instance目标源使用了非默认 platform_instance 时必须配置否则血缘指向不存在的 URNpage_size2001–200v3 objects 分页大小export_batch_size10001–1000每个 v3 export 批次的 mapping 数export_poll_timeout_secs30030–3600导出作业轮询超时export_poll_interval_secs51–600轮询间隔模型校验器要求必须小于 timeoutconfig.py#L366-L374request_timeout_secs605–600HTTP 超时v2 接口无分页大型组织需调大max_concurrent_export_jobs41–8并发 export 作业数命中 IDMC 限流时调小stateful_ingestionnull—启用陈旧实体删除检测4. Taskflow 步骤 DAG从 IDMC XML 到 DataJob 链Taskflow 的步骤顺序解析自 v3 Export API 返回的.TASKFLOW.xml——即 IDMCtaskflowModel中的eventContainer/service/link图。为提升效率单次 ingestion 中所有 Taskflow GUID 会合并为一个export 作业提交。连接器不会为每个步骤单独输出 DataJob而是把步骤引用折叠到其所运行的 MT 上直接通过dataJobInputOutput.inputDatajobs把各 MT 的transformDataJob 串成链每个 Taskflow 只输出一个orchestrateDataJob 并锚定在链尾inputDatajobs [最后一个 MT]其outputDatasets镜像最后一个 MT 的输出。最终 Taskflow 血缘可端到端读作input_dataset → MT1.transform → MT2.transform → … → MTn.transform → orchestrate → output_dataset非数据步骤command / decision / notification 等不参与链但会被汇总进 orchestrate DataJob 的customProperties.stepSummary以供审计。源码印证source.py 中OrchestrateState数据类注释了output_datasets在输出前由最后一个 MT 的输出填充经_orchestrate_by_last_mt反向索引__init__中维护_mt_predecessors每个 MT DataJob URN 在 Taskflow 中按步骤顺序排列、去重的前驱集合与_orchestrate_by_last_mt反向索引source.py#L174-L182。5. 表级血缘解析连接类型映射与外部数据集 stub5.1 内置连接类型映射输出血缘时每个 IDMC connection 会映射到一个 DataHub 平台例如Snowflake_Cloud_Data_Warehouse → snowflake映射由connParams[Connection Type]驱动。内置映射表CONNECTION_TYPE_MAPconfig.py#L23-L115覆盖关系型数据库Oracle含 CDC、MySQL、PostgreSQL、SQL Server、DB2、SAP HANA、Teradata、Greenplum、Vertica、Sybase云数仓Snowflake多个变体、Redshift、BigQuery含TOOLKIT_CCI_*旧版 CDK 连接器、Azure SQL / Synapse、Databricks云对象存储S3、GCS、Azure Blob / ADLS Gen2NoSQL 与大数据MongoDB、Cassandra、Hive、HDFS、Elasticsearch、Kafka扁平/半结构化文件FlatFile、CSV、FTP、SFTPSaaS 应用Salesforce、NetSuite、Workday短名别名如Snowflake、BigQuery、Postgres用于连接类型字段为空、只能靠连接名子串推断平台的场景长 key 仍通过最长匹配优先。若 IDMC 返回了未知类型或客户自研连接器有两种配置手段connection_type_overrides按连接 ID强制指定 DataHub 平台名优先级最高connection_type_platform_map按连接类型字符串扩充/覆盖内置映射表。配置解析期会对未知平台名输出警告config.py#L376-L411。5.2 外部数据集 stubStatus aspect血缘引用到的每个输入/输出数据集 URN在首次出现时都会收到一个最小Statusaspectinformatica_post.md。原因若没有任何其他连接器采集过该 URNDataHub 会视其为不存在searchAcrossLineage会把它们从结果中过滤掉——这会导致 Mapping Task 的transformDataJob 左侧上游数据集无法展开。stub 是幂等的不会覆盖平台自身连接器写入的 Schema、Ownership 等其他元数据。源码中可见对应状态集合_stubbed_external_dataset_urns注释明确说明被血缘引用的外部数据集Snowflake、Oracle 等需要一个最小 Status aspect 注册为存在的实体否则searchAcrossLineage会过滤掉它们source.py#L187-L190。6. 三层过滤策略三层过滤器可任意组合按顺序应用informatica_post.md标签过滤tag_filter_names大型组织推荐——IDMC 标签白名单只采集中至少带一个标签的对象标签精确匹配非正则。注意该过滤只作用于 Project、Folder、Taskflow 与 Mapping TaskMapping 与 Connection 始终全量拉取路径过滤project_pattern、folder_pattern——按 Project / Folder 名的正则 allow/deny名称过滤mapping_pattern、taskflow_pattern——按 mapping / taskflow 名的正则 allow/deny。源码层面project_pattern/folder_pattern/mapping_task_pattern/taskflow_pattern均为AllowDenyPattern默认allow_all其中 task/mapping 模式匹配的是folder_path/name因此可以对不同文件夹中的同名任务分别做差异化过滤config.py#L154-L190。7. 所有权与标签抽取extract_ownership: true从 IDMC 对象的createdBy/updatedBy字段推导 CorpUser。若你的 Okta/Azure AD 源采集用户时不带邮箱域名可启用strip_user_email_domain: true把aliceacme.com归一为urn:li:corpuser:alice使所有权边与既有 CorpUser URN 对齐extract_tags: true默认开启不写也会采将 IDMC 对象标签输出为 DataHub GlobalTag作用于 Project、Folder、Taskflow、Mapping Task。8. 有状态采集与陈旧实体删除推荐启用stateful_ingestion: enabled: true实现自动删除检测IDMC 中已删除的 Project/Taskflow/MT 对应实体会在下一轮采集时被清理。源码实现基于StatefulIngestionSourceBasesource.py#L59-L61能力声明为DELETION_DETECTION。9. 已知限制来自 informatica_post.md 的完整限制清单无列级血缘——v3 export 只提供转换级源/目标表没有列映射无执行历史——不会把 Activity Monitor 运行记录作为 DataProcessInstance 采集Taskflow 步骤 DAG 依赖Asset - export——步骤顺序存放于经 v3 Export API 获取的taskflowModelXML。对用户无导出权限的 Taskflow步骤链会静默 no-opTaskflow 本身仍作为 DataFlow 输出并带其orchestrateDataJob但该 orchestrate 没有inputDatajobs链。报告中含taskflows_with_steps计数供确认覆盖范围仅支持单用户认证——不支持 service principal / 联邦 SSO 登录需使用原生 IDMC 用户v2 API 端点无分页——/api/v2/mapping与/api/v2/connection单次响应返回全部记录IDMC v2 API 不识别limit、skip、maxRecordsCount已在真实实例上验证。mapping 超过 1 万条或 connection 超过 1 千条的组织单次调用可能超出request_timeout_secs或产生超大响应。缓解手段调大request_timeout_secs或用tag_filter_names把采集范围限定到带标签的子集。10. 故障排查10.1 启动时IDMC login failed连接器在 v2 login 端点返回非 200、或响应体缺少icSessionId/serverUrl时抛出。常见原因login_url区域写错对照第 2.2 节区域表服务账号被锁定、被 MFA 保护或密码过期——应使用无交互式 MFA 的专用 IDMC 用户防火墙阻断到*.informaticacloud.com的出站流量。抛出的错误包含 HTTP 状态码、截断的响应体与实际使用的login_url。登录逻辑位于 client.py#L112。10.2 报告中的connections_unresolved条目连接器通过把 mapping 的connectionId如saas:fed-xyz与 IDMC 连接目录匹配来解析血缘数据集 URN。若某连接无法映射到 DataHub 平台该血缘边被丢弃连接记入connections_unresolved。两类典型原因连接类型不在内置CONNECTION_TYPE_MAP中如自研连接器——在connection_type_overrides中添加 连接 ID → DataHub 平台 的映射服务账号缺少Connection - read权限list_connections拉到空或不完整的目录对应 client.py#L434。10.3Failed to fetch mapping tasks警告Mapping Task 位于/api/v2/mttask该端点通常对特定角色受限。连接器将其视为警告而非失败——mapping 与血缘采集仍可在没有它的情况下完成对应 client.py#L449。若需要 MT请给服务账号授予 mapping task 的Asset - read。10.4 Export 作业超时v3 Export API 是异步的对非常大的组织默认export_poll_timeout_secs: 300可能不够。处理建议调小export_batch_size默认 1000——更小批次单个完成更快调大export_poll_timeout_secs上限 3600用tag_filter_names把导出限定到带标签的 mapping。连接器会为每个超时的批次输出标题为 IDMC export job timed out 的报告警告并记入export_jobs_failed。10.5 Add-On Bundles 泄露IDMC 附带若干 marketplace bundle例如 Cloud Data Integration 模板。连接器会自动过滤检查path.startswith(Add-On Bundles/)或updated_by bundle-license-notifier。若仍有 bundle mapping 漏出可携带问题对象路径提交 issue。11. 验证与测试入口如需在自己的环境中验证采集输出仓库提供了现成的测试资产单元测试tests/unit/informatica/含test_client.py、test_models.py、test_source.py覆盖配置校验、客户端行为与实体输出集成测试tests/integration/informatica/test_informatica.py配合 golden 文件 informatica_mces_golden.json 比对完整 MCP 输出。小结DataHub 的informatica源以可运行的 Mapping Task 为一等公民为建模原则Project/Folder 构建浏览层级Taskflow 被折叠为transformDataJob 链加一个链尾orchestrateDataJob表级血缘经 v3 Export API 与连接类型映射落到跨源 Dataset URN 上外部数据集用Statusstub 兜底。对于大型 IDMC 组织tag_filter_namesstateful_ingestion 导出批处理调优是文档推荐的组合拳遇到未知连接类型或未解析血缘边时优先检查connection_type_overrides与服务账号的Connection - read/Asset - export权限。当前该连接器处于 Beta 支持状态适用前提是以原生 IDMC 用户非联邦 SSO完成 v2 登录。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表