如何通过托管身份将Synapse Spark DataFrame写入Azure Event Hub
用托管身份从Synapse Spark写入Azure Event Hubs的实现方案
一、先给托管身份配置权限
- 找到你的Synapse工作区,进入概述页复制系统分配托管身份的名称(或客户端ID)
- 进入Azure Event Hubs命名空间的**访问控制(IAM)**页面
- 添加角色分配:选择Azure Event Hubs Data Sender角色,将权限分配给Synapse的系统分配托管身份,保存配置(权限生效可能需要5-10分钟)
二、修改PySpark代码
不需要再使用连接字符串,直接通过托管身份配置连接参数即可,以下是系统分配托管身份的代码示例:
# 替换为你的Event Hubs命名空间和事件中心名称 eh_namespace = "你的EH命名空间" eh_name = "你的事件中心名称" eh_conf = { "eventhubs.namespace": eh_namespace, "eventhubs.entityPath": eh_name, "eventhubs.authentication": "MANAGED_IDENTITY" } # 如果是使用用户分配托管身份,需要额外添加clientId参数: # eh_conf["eventhubs.clientId"] = "用户分配托管身份的客户端ID" df.selectExpr("partitionKey", "body").write.format("eventhubs").options(**eh_conf).save()
说明
- 系统分配托管身份无需额外指定客户端ID,Spark会自动使用Synapse工作区的系统身份进行认证
- 权限配置是关键,必须确保托管身份拥有Event Hubs的发送权限,否则会出现认证失败的错误
内容的提问来源于stack exchange,提问作者Alex Serban
相关产品推荐
相关产品推荐

