无法实例化Azure Databricks的EventHubSourceProvider

问题描述 投票:0回答:1

使用structured streaming pyspark中记录的步骤,我无法从为读取流数据而设置的Azure事件中心在pyspark中创建数据框。

错误消息是:java.util.ServiceConfigurationError:org.apache.spark.sql.sources.DataSourceRegister:提供程序org.apache.spark.sql.eventhubs.EventHubsSourceProvider无法实例化

我已经安装了Maven库(com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.12不可用),但似乎没有任何作用:com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.15com.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()

使用结构化流pyspark中记录的步骤,我无法从为读取流数据而设置的Azure事件中心在pyspark中创建数据框。错误消息是:...

pyspark azure-eventhub azure-databricks
1个回答
0
投票

为了解决该问题,我执行了以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.