【问题标题】:Cloud Dataflow Streaming continuously failing to insertCloud Dataflow Streaming 不断无法插入
【发布时间】:2017-02-13 22:01:36
【问题描述】:

我的数据流管道功能如下:

Read from Pubsub
Transform data into rows
Write the rows to bigquery

打开时,传递了无法插入的情况数据。没关系,我知道这次失败的原因。但是数据流不断地尝试一遍又一遍地插入这些数据。我想限制重试次数,因为它会用不相关的信息使工作日志膨胀。因此,当重复出现相同的错误时,很难解决问题是什么。

在本地运行管道时,我得到:

no evaluator registered for Read(PubsubSource)

我希望能够在本地测试管道。但似乎数据流不支持 PubSub 的此选项。

要清除错误,我别无选择,只能取消管道并在 Google Cloud 上运行新作业。这需要时间和金钱。有没有办法限制错误?有没有办法在本地测试我的管道?有没有更好的方法来调试管道?

Dataflow UI

职位编号:2017-02-08_09_18_15-3168619427405502955

【问题讨论】:

  • 目前除了异常处理外,没有办法限制错误。请参阅此处底部的注释:cloud.google.com/dataflow/pipelines/… 它会无限期地尝试重新运行您的代码。如果您查看他们通常从 CSV 文件中读取本地运行数据的示例,我认为没有办法在本地使用 Pub/Sub 进行测试。
  • 假设出现异常时,是否可以让 Dataflow 确认 Pubsub 消息?据我所知,除非成功处理 Pubsub 消息,否则 Cloud Dataflow 永远不会确认该消息。
  • 这可能完全取决于您期望并想要处理什么样的异常。例如,您可以查看这篇博文 cloud.google.com/blog/big-data/2016/01/… 在我的例子中,我正在接收和解析来自 Pub/Sub 的 JSON 消息,如果转换失败,我会捕获并记录有效负载以供以后分析。
  • 我正在看看你的工作。我会在几个小时后回来报告。
  • 您是否尝试使用DirectPipelineRunner 在本地运行作业?尝试使用 InProcessPipelineRunner 在本地运行您的管道,它应该支持流式传输。

标签: google-cloud-dataflow


【解决方案1】:

要使用无限数据集在本地运行管道,请根据@Pablo 的建议使用InProcessPipelineRunner

        dataflowOptions.setRunner(InProcessPipelineRunner.class);

在本地运行程序使我能够处理异常错误并快速优化我的工作流程。

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多