首页 > 解决方案 > 在 Apache Beam 中使用 BigTable 中的 checkAndMutate(条件写入)

问题描述

我需要使用 Apache Beam 将记录写入 BigTable。但是,如果表中已经存在特定的行键,则不能写入记录。我可以为此在 BigTable 中使用条件写入吗?我没有在文档中找到使用 Apache Beam 的示例。

标签: google-cloud-dataflowapache-beamgoogle-cloud-bigtablebigtable

解决方案


您应该能够通过创建检查行正则表达式的条件行突变来做到这一点,然后将您的突变应用于记录。这是使用 Java 客户端(不是 HBase Java)的代码,但对于其他客户端,您可以在文档中找到更多示例以及所有需要包含的包。

String rowkey = "YOUR_ROWKEY";
Mutation mutation =
Mutation.create().setCell(COLUMN_FAMILY_NAME, COLUMN_QUALIFIER, timestamp, VALUE);

Filter filter = FILTERS.key().regex("^YOUR_ROWKEY$");

ConditionalRowMutation conditionalRowMutation =
ConditionalRowMutation.create(tableId, rowkey).condition(filter).otherwise(mutation);

推荐阅读