繁体   English   中英

如何从 azure eventthub 到 databricks 获取记录

[英]How to get records from azure eventhub to databricks

我正在使用社区添加数据块。 我尝试了以下代码,但没有得到任何记录:

var streamingSelectDF = 
  streamingInputDF
   .select(get_json_object(($"body").cast("string"), "$.id").alias("id"),get_json_object(($"body").cast("string"), "$.CarName").alias("CarName"))

streamingSelectDF.writeStream.outputMode("append").format("console").option("truncate", false).start().awaitTermination()

您能否检查一下事件中心是否收到任何消息?

如果没有,您能否将一些示例事件发送到 eventthub 并查看它是否正在接收这些事件。

从事件中心读取数据并将数据打印到控制台的示例代码。

// Build connection string with the above information
val namespaceName = "<EVENT HUBS NAMESPACE>"
val eventHubName = "<EVENT HUB NAME>"
val sasKeyName = "<POLICY NAME>"
val sasKey = "<POLICY KEY>"
val connStr = new com.microsoft.azure.eventhubs.ConnectionStringBuilder()
            .setNamespaceName(namespaceName)
            .setEventHubName(eventHubName)
            .setSasKeyName(sasKeyName)
            .setSasKey(sasKey)

val customEventhubParameters =
  EventHubsConf(connStr.toString())
  .setMaxEventsPerTrigger(5)

val incomingStream = spark.readStream.format("eventhubs").options(customEventhubParameters.toMap).load()

incomingStream.writeStream.outputMode("append").format("console").option("truncate", false).start().awaitTermination()

您可以参考此链接了解更多详细信息: https://docs.microsoft.com/en-in/azure/databricks/scenarios/databricks-stream-from-eventhubs

默认情况下,当您在没有现有检查点的情况下开始流式传输时,发生消费的开始 position 是 stream 的结尾,因此在您向主题发送新消息之前,您不会获得任何现有数据。 您可以通过指定 EventHubs conf 的相应选项来更改它:

val cs = "YOUR.CONNECTION.STRING"
val ehConf = EventHubsConf(cs)
  .setStartingPosition(EventPosition.fromStartOfStream)
val df = spark
  .readStream
  .format("eventhubs")
  .options(ehConf.toMap)
  .load()
df.select(get_json_object(($"body").cast("string"), ....)

有关所有可能选项的描述,请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM