[英]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.