更新Apache Beam(Scio)中的BigTable行

时间:2018-07-16 07:55:16

标签: google-cloud-dataflow apache-beam bigtable google-cloud-bigtable spotify-scio

我有以下用例:

有一个PubSub主题,其中包含我想使用Scio进行汇总,然后将这些汇总保存到BigTable中的数据。

在我的管道中,有一个CountByKey聚合。我想做的是能够在BigTable中为给定键增加值,最好使用ReadModifyWrite。在scio-examples中,仅存在与设置列值有关的更新,而没有使用原子增量的情况。

我了解我需要创建Mutation以便在BigTable上执行任何操作,例如:

Mutations.newSetCell(
      FAMILY_NAME, COLUMN_QUALIFIER, ByteString.copyFromUtf8(value.toString), 0L)

如何从Scio / Apache Beam转换创建 UPDATE 突变以自动更新BigTable中的行?

1 个答案:

答案 0 :(得分:1)

ReadModifyWrite API下看不到com.google.bigtable.v2.Mutation之类的东西,因此不确定是否可行。我看到2种可能的解决方法:

  • 将事件另存为Pubsub主题,从后端服务中使用它并在那里增加
  • 在自定义DoFn中使用原始Bigtable客户端,请参阅BigtableDoFn以获取灵感。