Apache spark 使用Kafka使用Synapse Spark将数据帧写入Azure EventHub

Apache spark 使用Kafka使用Synapse Spark将数据帧写入Azure EventHub,apache-spark,azure-eventhub,azure-synapse,Apache Spark,Azure Eventhub,Azure Synapse,我想用Azure Synapse Spark(在Synapse Analytics工作区中)将一个数据帧写入启用Kafka的Azure事件中心 Apache Spark版本:2.4 Python版本:3.6 Scala版本:2.11.12 这段代码在Databricks中运行得非常完美: # Build SASL: EH_SASL = 'org.apache.kafka.common.security.plain.PlainLoginModule required username=&quo

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

  • Apache Spark版本:2.4
  • Python版本:3.6
  • Scala版本:2.11.12
这段代码在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

但我也尝试过:

  • spark-sql-kafka-0-10_2.11-2.4.8.jar

  • spark-sql-kafka-0-10_2.11-2.4.3.jar

  • spark-sql-kafka-0-10_2.11-2.4.0.jar

  • spark-sql-kafka-0-10_2.11-2.0.2.jar

  • spark-sql-kafka-0-10_2.12-2.4.7.jar

  • spark-sql-kafka-0-10_2.12-2.4.3.jar

  • spark-sql-kafka-0-10_2.12-2.4.0.jar

  • azure-eventhubs-spark_2.11-2.3.17.jar

  • azure-eventhubs-spark_2.11-2.3.18.jar

每次我都会遇到与缺课等相关的错误

那么我可以使用哪些库来运行此代码?


谢谢大家!

最后,我设法在不使用Kafka的情况下写入事件中心:我将数据帧保存到Synapse Spark temp表中,然后在Scala中读取该表并按如下方式写入:
scalaDf.selectExpr(“partitionKey”,“body”).write.format(“eventhubs”).options(ehConfig.toMap).save()
但我仍然希望使用Kafka,这样我就不必分两步编写:保存到临时表,然后使用Scala写入EH。。。。