【问题标题】:Cloud Dataflow - Records dropped while streaming job but as not batch jobCloud Dataflow - 流式传输作业时删除的记录但不是批处理作业
【发布时间】:2020-11-03 21:45:44
【问题描述】:

我有一个数据流管道,它从 gcs 存储桶中获取许多文件,提取记录并应用一些转换,最后将它们输出到 parquet 文件中。它一直在监视存储桶中的文件,使其成为流式管道,尽管现在我们有一个终止条件,可以在距离上一个新文件 1 分钟后停止管道。我们正在使用存储桶中的一组固定文件进行测试

我最初以批处理模式运行此管道(无连续文件监视),通过在 bigquery 中查询 parquet 文件,大约有 3600 万条记录。但是,当我启用连续文件监视并重新运行管道时,镶木地板文件仅包含约 76 万条记录。我仔细检查了两次运行中输入存储桶具有相同的文件集。

流式作业详细信息页面上的指标与输出的完全不匹配。根据添加的元素(近似值)部分,它说尽管文件包含约 76 万条记录,但在最后的拼花写入步骤的输入集合中添加了约 2100 万条记录(这是错误的)。

批处理作业的同一步骤对于添加的元素(近似值) 具有正确的数量(3600 万),这与输出的 parquet 文件中的记录数量相同。

我没有在日志中看到任何异常。

为什么云数据流将流作业标记为成功,即使在写入输出期间删除了大量记录?

为什么云数据流上具有相同输入的批处理和流式作业的指标报告不一致?

对于这两项工作,我设置了 3 名工人,机器类型为 n1-highmem-4。我几乎达到了该项目的配额。

【问题讨论】:

    标签: java google-cloud-platform google-cloud-dataflow apache-beam parquet


    【解决方案1】:

    我怀疑这可能是由于您为流式传输管道配置 Windows 和触发器的方式。默认情况下,Beam/Dataflow 在水印通过窗口结束时触发数据,并且默认窗口配置设置允许延迟为零。所以任何迟到的数据都会被管道丢弃。要更改此行为,您可以尝试设置允许的延迟值或尝试设置不同的触发器。请参阅here 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      相关资源
      最近更新 更多