Microsoft Purview未捕获数据导入血缘:Databricks/ADF导入SQL MI场景排查
Purview无法捕获Databricks/ADF到SQL托管实例的血缘:配置遗漏与解决方法
可能的配置遗漏
Azure Databricks场景
- 未完成Purview与Databricks工作区的集成配置,或集群未启用Purview血缘捕获功能
- 权限缺失:Purview服务主体无Databricks工作区访问/集群操作权限;Databricks服务主体无Purview的数据血缘贡献者角色
- 集群环境不兼容:使用的Spark版本低于3.0,或未安装Purview血缘捕获所需的依赖库
- Notebook代码未采用Purview支持的标准读写方式(如使用自定义JDBC封装、非标准数据源API)
Azure Data Factory场景
- 未在ADF实例中关联Purview账户,或未开启数据血缘捕获开关
- 权限不足:ADF托管标识无Purview的数据血缘贡献者角色;Purview无ADF实例的读取权限
- 管道活动类型不支持:使用了自定义活动(如Python脚本)而非Purview原生支持的复制/数据流活动
- 目标资产未被Purview识别:Azure SQL托管实例未完成Purview扫描,或扫描未成功捕获目标表资产
- 管道未实际运行:Purview的ADF血缘是基于管道执行时的运行数据捕获,静态配置不会生成血缘
通用配置遗漏
- Purview扫描范围未覆盖Azure SQL托管实例,或扫描任务失败导致资产未入库
- 网络隔离问题:Purview与Databricks/ADF/SQL托管实例之间存在网络阻塞(如私有网络未配置私有链接、防火墙规则限制)
- Purview服务主体无Azure订阅的读取者角色,无法枚举关联的云资源
确保血缘正常捕获的配置步骤
Azure Databricks配置
- 关联Purview与Databricks工作区:在Databricks工作区的「管理 > 数据治理」中添加Purview账户,完成工作区级集成
- 配置集群血缘捕获:在集群的「高级选项 > Spark」中启用Purview血缘捕获,填入Purview账户ID及服务主体的Client ID、Secret、Tenant ID
- 安装依赖库:在集群上安装
azure-purview-catalog和azure-purview-scanning库,或使用Purview提供的集群初始化脚本 - 标准化代码:使用Spark标准读写API(如
spark.read.jdbc、spark.write.jdbc),避免自定义底层读写逻辑;若使用Delta Lake,确保版本与Purview兼容 - 权限补全:给Purview服务主体分配Databricks「Workspace User」角色;给Databricks服务主体分配Purview「数据血缘贡献者」角色
Azure Data Factory配置
- 关联Purview与ADF实例:在ADF的「管理 > 数据治理」中关联目标Purview账户,开启「捕获数据血缘」选项
- 配置权限:给ADF托管标识分配Purview「数据血缘贡献者」角色,确保Purview可读取ADF管道配置
- 使用支持血缘的活动:优先采用内置的复制活动、数据流活动;若必须使用自定义活动,需通过Purview SDK手动上报血缘
- 确认资产状态:完成Azure SQL托管实例的Purview全量扫描,确保目标表已被Purview识别
- 触发管道运行:手动执行一次管道,Purview会在1-2小时内生成对应血缘(数据流活动的血缘捕获可能耗时更久)
通用检查项
- 网络连通性验证:确保Purview与所有涉及服务的网络可达,可通过配置私有链接、开放防火墙规则或VNet集成实现
- 扫描状态检查:在Purview门户查看SQL托管实例的扫描历史,确认扫描成功且资产已入库
- 角色权限确认:给Purview服务主体分配Azure订阅「读取者」角色,同时确保Purview账户拥有「数据目录参与者」角色以写入血缘数据
- 日志排查:在Purview的「监控 > 日志」中搜索血缘相关错误(如权限报错、连接超时),定位具体问题
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

