You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks on Apache Spark中读取Azure Event Hub流数据时遇AttributeError: 'str' object has no attribute '_jvm'错误求解决方案

解决AttributeError: 'str' object has no attribute '_jvm' 问题

这个错误我之前处理过,原因其实一眼就能看出来——你把sparkContext赋值成了空字符串"",这哪是Spark的上下文对象啊!字符串当然没有_jvm这个属性,所以调用sparkContext._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt()的时候就炸了。

正确的修复步骤:

在Databricks环境中,spark对象是默认初始化好的SparkSession实例,你只需要从它里面获取真正的SparkContext就行:

# 不要把sparkContext赋值为空字符串!
sparkContext = spark.sparkContext  # 这才是正确的Spark上下文对象
connectionString = 'Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=both4;SharedAccessKey=adfdMyKeyIGBKYBs=;EntityPath=hubv5' 

ehConf = {} 
# 现在可以正常调用加密方法了
ehConf['eventhubs.connectionString'] = sparkContext._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(connectionString) 

streaming_df = spark \
 .readStream \
 .format("eventhubs") \
 .options(**ehConf) \
 .load() 

额外注意事项:

  • 确保你的Databricks集群已经安装了Azure Event Hubs的Spark连接器依赖,通常可以通过集群的"库"页面添加Maven坐标:com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.22(版本可以根据你的Spark版本调整)
  • 如果你不想用加密的连接字符串,也可以直接把原始连接字符串放到ehConf里,但生产环境更推荐加密方式

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:22:48