求助:Azure Event Hub预览版数据生成器数据无法在Databricks读取
解决Databricks无法读取Azure Event Hub预览版数据生成器数据的问题
以下是针对性的排查和解决步骤:
1. 核对数据生成器的目标配置
- 确认预览版数据生成器配置的命名空间、Event Hub名称,与代码中
connectionString的Endpoint(myspace.servicebus.windows.net)、EntityPath(carlshub)完全一致,包括大小写。预览版工具可能存在配置输入误差,需仔细校验。 - 登录Azure Portal,进入目标Event Hub实例的指标页面,查看
Incoming Messages指标,确认数据确实已成功流入Event Hub。
2. 验证Spark Event Hubs连接器版本兼容性
- 先检查Databricks集群安装的
azure-eventhubs-spark版本:import pkg_resources print(pkg_resources.get_distribution("azure-eventhubs-spark").version) - 若版本低于2.3.15,注释掉加密连接字符串的代码,改用明文配置:
# 替换原加密代码行 ehConf['eventhubs.connectionString'] = connectionString - 若版本符合2.3.15及以上要求,单独执行加密语句测试,确认无异常抛出。
3. 检查访问权限配置
- 确认
myaccesspolicy共享访问策略已勾选Listen权限(读取操作必需),在Azure Portal的Event Hub命名空间「共享访问策略」页面可查看配置。 - 核对
SharedAccessKey是否复制正确,确保无多余空格或特殊字符,与Azure Portal显示的密钥完全一致。
4. 调整流读取的起始位置
默认情况下,Spark流读取Event Hub是从当前时间点开始消费,若你先运行数据生成器再启动Databricks任务,历史数据不会被读取。添加起始位置配置,让任务从最早偏移量开始读取:
# 加入ehConf字典中 ehConf['eventhubs.startingPosition'] = '{"offset": "-1", "seqNo": -1, "enqueuedTime": null, "isInclusive": true}'
5. 排查网络连通性
- 若Databricks集群是VNet注入模式,确认集群所在VNet与Event Hub命名空间的VNet已建立对等连接。
- 若Event Hub启用了防火墙,需将Databricks集群的公网IP添加到防火墙允许列表中,否则会被拒绝连接。
6. 调试流任务状态
- 运行
display(df)后,点击流监控界面的「查看详细信息」,检查是否有消费延迟、连接错误等提示。 - 查看集群驱动日志,搜索
EventHubs相关报错,定位权限不足、连接超时等具体问题。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

