首页 > 解决方案 > 使用 Kafka 使用 Synapse Spark 将数据帧写入 Azure EventHub

问题描述

我想使用 Azure Synapse Spark(在 Synapse Analytics 工作区中)将数据帧写入启用 Kafka 的 Azure 事件中心。

这个确切的代码在 Databricks 中完美运行:

# Build SASL:
EH_SASL = 'org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://{}.servicebus.windows.net/;SharedAccessKeyName={};SharedAccessKey={}";'.format(EH_NAMESPACE, EH_CLO_TRANSACTIONS_KEY_NAME, EH_CLO_TRANSACTIONS_KEY_VALUE)

# Write data:
kdf.write.format("kafka")\
.option("kafka.sasl.mechanism", "PLAIN")\
.option("kafka.security.protocol", "SASL_SSL")\
.option("kafka.sasl.jaas.config", EH_SASL)\
.option("kafka.batch.size", 5000)\
.option("kafka.bootstrap.servers", "{}.servicebus.windows.net:9093".format(EH_NAMESPACE))\
.option("kafka.request.timeout.ms", 300000)\
.option("topic", EH_CLO_TRANSACTIONS)\
.save()

在这里,使用 Synapse Spark 我收到此错误:

java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

我相信这与我正在使用的库有关。我现在正在使用:spark-sql-kafka-0-10_2.11-2.4.0.jar

但我也尝试过:

每次我收到与缺少课程等相关的错误时。

那么我可以使用哪些库来让这段代码工作呢?

谢谢!

标签: apache-sparkazure-eventhubazure-synapse

解决方案


推荐阅读