Azure Databricks中EventHubsSourceProvider无法实例化问题求助
解决Azure Databricks读取Event Hub时的ServiceConfigurationError错误
问题原因
你遇到的java.util.ServiceConfigurationError是由于Azure Event Hubs Spark连接器版本与Databricks Runtime版本不兼容导致的:
- 当前使用的
com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.22仅支持Spark 3.0~3.2版本 - 而Databricks Runtime 14.2搭载的是Spark 3.5.0,超出了该连接器的支持范围,导致
EventHubsSourceProvider无法正常实例化。
解决方案
1. 替换为兼容的连接器版本
卸载旧版本连接器,安装适配Spark 3.5的兼容版本:
- 推荐安装
com.microsoft.azure:azure-eventhubs-spark_2.12:3.4.1(该版本支持Spark 3.3~3.5,适配Databricks Runtime 13.x~14.x)
2. 操作步骤
- 进入Databricks集群的库管理页面
- 找到已安装的
com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.22,点击删除 - 点击安装新库,选择Maven来源,在坐标栏输入
com.microsoft.azure:azure-eventhubs-spark_2.12:3.4.1,确认安装 - 安装完成后重启集群,确保新库生效
3. 验证代码
原有代码逻辑无需修改,重启集群后重新执行即可正常读取Event Hub数据:
from pyspark.sql.functions import * from pyspark.sql.types import * NAMESPACE_NAME = "*myEventHub*" KEY_NAME = "*MyPolicyName*" KEY_VALUE = "*MySharedAccessKey*" connectionString = "Endpoint=sb://{0}.servicebus.windows.net/;SharedAccessKeyName={1};SharedAccessKey={2};EntityPath=ingestion".format(NAMESPACE_NAME, KEY_NAME, KEY_VALUE) ehConf = {} ehConf['eventhubs.connectionString'] = connectionString df = spark \ .readStream \ .format("eventhubs") \ .options(**ehConf) \ .load()
额外注意事项
- 后续升级Databricks Runtime时,务必确认Event Hubs连接器的版本兼容性,避免再次出现版本不匹配问题
- 建议将Event Hub的密钥存储在Databricks Secrets中,避免明文暴露敏感信息
内容的提问来源于stack exchange,提问作者sparc
相关产品推荐
相关产品推荐

