无法为 Azure Databricks 实例化 EventHubSourceProvider
Could not instantiate EventHubSourceProvider for Azure Databricks
使用 structured streaming pyspark 中记录的步骤,我无法从我设置的 Azure 事件中心在 pyspark 中创建数据框以读取流数据。
错误信息是:
java.util.ServiceConfigurationError: org.apache.spark.sql.sources.DataSourceRegister: Provider org.apache.spark.sql.eventhubs.EventHubsSourceProvider 无法实例化
我已经安装了 Maven 库(com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.12 不可用)但是 none 似乎可以工作:
com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.15
com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.6
和ehConf['eventhubs.connectionString'] = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(connectionString)
一样但是返回的错误信息是:
java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/spark/internal/Logging;)V
连接字符串是正确的,因为它也用于写入 Azure 事件中心并且有效的控制台应用程序。
有人能给我指出正确的方向吗?使用中代码如下:
from pyspark.sql.functions import *
from pyspark.sql.types import *
# Event Hub Namespace Name
NAMESPACE_NAME = "*myEventHub*"
KEY_NAME = "*MyPolicyName*"
KEY_VALUE = "*MySharedAccessKey*"
# The connection string to your Event Hubs Namespace
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
# For 2.3.15 version and above, the configuration dictionary requires that connection string be encrypted.
# ehConf['eventhubs.connectionString'] = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(connectionString)
df = spark \
.readStream \
.format("eventhubs") \
.options(**ehConf) \
.load()
为解决此问题,我执行了以下操作:
- 卸载 azure event hub 库版本
- 从 Maven Central 安装 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.15 库版本
- 重启集群
- 通过问题中提供的重新运行代码验证
在 Spark 集群 运行 Spark 3.0 和 Scala 2.12
对于通过 google 找到它的任何其他人 - 检查您是否有正确的 Scala 库版本。就我而言,我的集群是带有 Scala 2.12
的 Spark v3
将我使用的教程中的库版本中的“2.11”更改为“2.12”,使其与我的集群运行时版本相匹配,解决了这个问题。
我不得不更进一步。在我必须添加的格式方法中:
.format("org.apache.spark.sql.eventhubs.EventHubsSourceProvider") 直接。
检查集群scala版本和库版本
卸载旧库并安装:
com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.17
在共享工作区(右键单击并安装库)以及集群中
使用 structured streaming pyspark 中记录的步骤,我无法从我设置的 Azure 事件中心在 pyspark 中创建数据框以读取流数据。
错误信息是: java.util.ServiceConfigurationError: org.apache.spark.sql.sources.DataSourceRegister: Provider org.apache.spark.sql.eventhubs.EventHubsSourceProvider 无法实例化
我已经安装了 Maven 库(com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.12 不可用)但是 none 似乎可以工作: com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.15 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.6
和ehConf['eventhubs.connectionString'] = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(connectionString)
一样但是返回的错误信息是:
java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/spark/internal/Logging;)V
连接字符串是正确的,因为它也用于写入 Azure 事件中心并且有效的控制台应用程序。
有人能给我指出正确的方向吗?使用中代码如下:
from pyspark.sql.functions import *
from pyspark.sql.types import *
# Event Hub Namespace Name
NAMESPACE_NAME = "*myEventHub*"
KEY_NAME = "*MyPolicyName*"
KEY_VALUE = "*MySharedAccessKey*"
# The connection string to your Event Hubs Namespace
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
# For 2.3.15 version and above, the configuration dictionary requires that connection string be encrypted.
# ehConf['eventhubs.connectionString'] = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(connectionString)
df = spark \
.readStream \
.format("eventhubs") \
.options(**ehConf) \
.load()
为解决此问题,我执行了以下操作:
- 卸载 azure event hub 库版本
- 从 Maven Central 安装 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.15 库版本
- 重启集群
- 通过问题中提供的重新运行代码验证
在 Spark 集群 运行 Spark 3.0 和 Scala 2.12
对于通过 google 找到它的任何其他人 - 检查您是否有正确的 Scala 库版本。就我而言,我的集群是带有 Scala 2.12
的 Spark v3将我使用的教程中的库版本中的“2.11”更改为“2.12”,使其与我的集群运行时版本相匹配,解决了这个问题。
我不得不更进一步。在我必须添加的格式方法中:
.format("org.apache.spark.sql.eventhubs.EventHubsSourceProvider") 直接。
检查集群scala版本和库版本 卸载旧库并安装: com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.17 在共享工作区(右键单击并安装库)以及集群中