3

我们在 Streaming 模式中有一个用例,我们希望从管道中跟踪 BigTable 上的计数器(#items 已完成处理),我们需要对其进行增量操作。通过查看https://cloud.google.com/bigtable/docs/dataflow-hbase,我发现此客户端不支持 HBase API 的追加/增量操作。说明的原因是批处理模式下的重试逻辑,但是如果 Dataflow 保证仅一次,为什么支持它是一个坏主意,因为我确定增量只被调用一次?我想了解我缺少什么部分。

此外,CloudBigTableIO可以在流模式下使用还是仅与批处理模式相关联?我想我们可以直接在管道中使用 BigTable HBase 客户端,但是连接器似乎具有很好的属性,例如我们想要利用的连接池,因此是问题所在。

4

2 回答 2

3

Dataflow(和其他系统)在出现故障和重试的情况下提供恰好一次执行的方式是要求副作用(例如变异 BigTable)是幂等的。“写”是幂等的,因为它在重试时被覆盖。插入可以通过包含对插入进行重复数据删除的确定性“插入 ID”来实现幂等。

对于增量,情况并非如此。不支持,因为重试时不是幂等的,所以不支持exactly-once执行。

于 2017-05-08T21:32:42.180 回答
1

CloudBigTableIO 在流模式下可用。为了通过 Dataflow SDK 支持它,我们必须实现 DoFn 而不是 Sink。

于 2017-05-09T14:11:46.813 回答