【发布时间】: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 上运行新作业。这需要时间和金钱。有没有办法限制错误?有没有办法在本地测试我的管道?有没有更好的方法来调试管道?
职位编号: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在本地运行您的管道,它应该支持流式传输。