0

大家好,

我需要从 Azure EventHub 读取流数据并将其转储到 blob 位置。根据成本优化,我不能更喜欢流分析或 Spark 流。我只能使用 Spark 批处理作业,我需要探索如何从 Azure EventHub 作为批处理读取数据(最好是前一天的数据)并将其转储到 blob。我的 Azure EventHub 保存 4 天的数据,我需要确保每次从 Azure EventHub 读取数据时都应避免重复。

我计划每天使用spark从azure event-hub读取一次数据,有没有一种方法可以在每次读取数据时保持一些顺序以避免重复。

任何帮助将不胜感激。

4

3 回答 3

2

事件中心的 Azure 客户端库有一个 EventProcessor。该处理器处理来自支持检查点存储的事件,该存储保存有关已处理事件的信息。目前,存在一种将检查点数据持久保存到 Azure 存储 Blob 的检查点存储实现。

这是我知道支持的语言的 API 文档。GitHub 存储库和示例浏览器中也有示例。

如果您只想将事件传输到“blob 位置”,事件中心支持捕获到 Azure 存储 Blob

于 2020-03-17T16:30:47.787 回答
0

简而言之,我通过 Spark Structured Streaming + Trigger.Once 实现了这一点。

processedDf
  .writeStream
  .trigger(Trigger.Once)
  .format("parquet")
  .option("checkpointLocation", "s3-path-to-checkpoint")
  .start("s3-path-to-parquet-lake")
于 2020-04-07T03:55:07.297 回答
0

如果流处理只是将事件转储到 Azure 存储,那么您应该考虑启用捕获,而不是在事件到达时服务可以将事件转储到您选择的存储帐户。https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview

于 2020-05-01T16:28:04.267 回答