我们在Streaming模式下有一个用例,我们想要从管道(#items完成处理)跟踪BigTable上的计数器,我们需要增量操作。通过查看https://cloud.google.com/bigtable/docs/dataflow-hbase,我发现此客户端不支持HBase API的追加/增量操作。陈述的原因是批处理模式的重试逻辑,但如果Dataflow保证完全一次,为什么支持它是一个坏主意,因为我知道增量只被调用一次?我想了解我缺少的部分。
此外,CloudBigTableIO
是否可用于流媒体模式,还是只与批处理模式相关联?我想我们可以直接在管道中使用BigTable HBase客户端,但是连接器似乎具有很好的属性,比如我们想要利用的连接池,因此问题。
答案 0 :(得分:2)
Dataflow(和其他系统)在出现故障和重试时提供完全一次执行的外观的方式是要求副作用(例如变异BigTable)是幂等的。 “写”是幂等的,因为它在重试时被覆盖。通过包含对插入进行重复数据删除的确定性“插入ID”,插入可以是幂等的。
对于增量,情况并非如此。它不受支持,因为它在重试时不会是幂等的,因此它不会支持完全一次执行。
答案 1 :(得分:1)
CloudBigTableIO可用于流模式。我们必须实现DoFn而不是Sink才能通过Dataflow SDK支持它。