Google cloud dataflow 处理批处理和流式消息的延迟和无序数据的数据流?

Google cloud dataflow 处理批处理和流式消息的延迟和无序数据的数据流?,google-cloud-dataflow,apache-beam,dataflow,Google Cloud Dataflow,Apache Beam,Dataflow,我的公司接收批处理和基于流的事件数据。我想在可预测的时间段内使用Google云数据流处理数据。然而,我意识到,在某些情况下,数据来得晚或不正常。如何使用数据流处理延迟或无序 这是一个家庭作业问题,我想知道下面的唯一答案 a。设置单个全局窗口以捕获所有数据 b。设置滑动窗口以捕获所有滞后数据 c。使用水印和时间戳捕获滞后数据 d。确保每个数据源类型(流或批处理)都有时间戳,并使用时间戳定义滞后数据的逻辑 我的推理——我相信‘C’就是答案。但是,水印实际上不同于后期数据。请确认。另外,由于这个问题同

我的公司接收批处理和基于流的事件数据。我想在可预测的时间段内使用Google云数据流处理数据。然而,我意识到,在某些情况下,数据来得晚或不正常。如何使用数据流处理延迟或无序

这是一个家庭作业问题,我想知道下面的唯一答案

a。设置单个全局窗口以捕获所有数据

b。设置滑动窗口以捕获所有滞后数据

c。使用水印和时间戳捕获滞后数据

d。确保每个数据源类型(流或批处理)都有时间戳,并使用时间戳定义滞后数据的逻辑

我的推理——我相信‘C’就是答案。但是,水印实际上不同于后期数据。请确认。另外,由于这个问题同时提到了批处理和基于流的,我也认为如果“D”可以是答案,因为“批处理”(或有界收集)模式没有时间戳,除非它来自源代码或以编程方式设置。所以,我对答案有点困惑

请帮忙。我不是以英语为母语的人,所以不确定我是否会错过问题中的一些线索

How to use Dataflow to handle late or out of order
这是一个大问题。我将尝试给出一些简单的解释,但提供一些可能有助于您理解的资源

有界数据收集

您已经意识到:有界数据不存在延迟问题。根据有界数据的性质,您可以在管道启动之前立即读取完整的数据集

无边界数据收集

您的C是正确的,水印与后期数据不同。实现中的水印是一个单调递增的时间戳。当Beam/Dataflow看到事件时间戳早于水印的记录时,该记录将被视为延迟数据(这只是概念性的,您可能希望检查[1]以了解一些详细讨论)

以下是[2]、[3]、[4]作为本主题的参考:

  • 这是一个大问题。我将尝试给出一些简单的解释,但提供一些可能有助于您理解的资源

    有界数据收集

    您已经意识到:有界数据不存在延迟问题。根据有界数据的性质,您可以在管道启动之前立即读取完整的数据集

    无边界数据收集

    您的C是正确的,水印与后期数据不同。实现中的水印是一个单调递增的时间戳。当Beam/Dataflow看到事件时间戳早于水印的记录时,该记录将被视为延迟数据(这只是概念性的,您可能希望检查[1]以了解一些详细讨论)

    以下是[2]、[3]、[4]作为本主题的参考:


  • B和C可能是答案

    使用滑动窗口,您可以控制数据的顺序,因此,如果您在位置9接收到数据,而在位置8没有接收到数据,您就知道数据8被延迟并等待它。问题是,如果最新的数据被延迟,你就无法知道这些数据被延迟了,你就丢失了它

    水印,为滞后数据等待一段时间,如果这段时间过去了,数据没有到达,您将丢失此数据


    因此,答案是C,因为B表示“捕获所有滞后数据”,而C忽略了单词all,C可能就是答案

    使用滑动窗口,您可以控制数据的顺序,因此,如果您在位置9接收到数据,而在位置8没有接收到数据,您就知道数据8被延迟并等待它。问题是,如果最新的数据被延迟,你就无法知道这些数据被延迟了,你就丢失了它

    水印,为滞后数据等待一段时间,如果这段时间过去了,数据没有到达,您将丢失此数据


    因此,答案是C,因为B表示“捕获所有滞后数据”,而C忽略了单词all,我认为“D”可能是一个选项,因为水印与后期数据不同。此外,批处理或有界数据本身不会有时间戳。因此,我认为确保时间戳位于数据源类型中,这取决于用例。在某些用例中,即使是批处理数据,也可能需要某种延迟处理需求。在本机Beam模型中,批处理是流式处理的一种特殊情况(批处理本身应该在全局窗口中),谢谢。在您的主要评论中,您的意思是-当Beam/Dataflow看到一个事件时间戳“晚于”水印的记录时?假设水印为w1,而事件时间戳为e。如果e1