【问题标题】:Read Batch Data from Azure EventHub on a daily basis每天从 Azure EventHub 读取批量数据
【发布时间】:2020-06-28 06:15:48
【问题描述】:

​大家好,

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: apache-spark azure-eventhub azure-eventhub-capture


    【解决方案1】:

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

    这里是我知道它支持的语言的 API 文档。GitHub 存储库和 samples browser 中也有示例。

    如果您只想将事件传输到“blob 位置”,事件中心支持capture into Azure Storage Blobs

    【讨论】:

      【解决方案2】:

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

      processedDf
        .writeStream
        .trigger(Trigger.Once)
        .format("parquet")
        .option("checkpointLocation", "s3-path-to-checkpoint")
        .start("s3-path-to-parquet-lake")
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-04
          • 2013-05-18
          • 2016-09-27
          • 1970-01-01
          相关资源
          最近更新 更多