【发布时间】:2018-01-02 18:03:38
【问题描述】:
在Dataflow 1.x 版本中,我们可以使用CloudBigtableIO.writeToTable(TABLE_ID) 来创建、更新和删除Bigtable 行。只要将DoFn 配置为输出Mutation 对象,它就可以输出Put 或Delete,并且CloudBigtableIO.writeToTable() 成功地为给定的RowID 创建、更新或删除了一行。
似乎新的Beam 2.2.0 API 使用BigtableIO.write() 函数,它与KV<RowID, Iterable<Mutation>> 一起使用,其中Iterable 包含一组行级操作。我已经找到了如何使用它来处理单元级数据,因此可以创建新行和创建/删除列,但是我们现在如何删除行,给定现有的 RowID?
任何帮助表示赞赏!
** 进一步澄清:
来自此文档:https://cloud.google.com/bigtable/docs/dataflow-hbase 我了解将依赖项 ArtifactID 从 bigtable-hbase-dataflow 更改为 bigtable-hbase-beam 应该与 Beam 版本 2.2.0 兼容,并且文章建议以旧方式进行 Bigtble 写入(并因此删除)通过使用CloudBigtableIO.writeToTable()。但是,这需要从 com.google.cloud.bigtable.dataflow 依赖系列导入,发行说明建议已弃用且不应使用(实际上它似乎与新的配置类/等不兼容)
** 进一步更新:
从bigtable-hbase-dataflow 更改为bigtable-hbase-beam ArtifactID 后,我的pom.xml 似乎没有正确刷新。项目更新后,我可以从
com.google.cloud.bigtable.beam.* 分支,这似乎至少适用于最小测试。
但是:现在看起来有两个不同的 Mutation 类:
com.google.bigtable.v2.Mutation 和
org.apache.hadoop.hbase.client.Mutation ?
为了让所有东西协同工作,必须正确指定哪个 Mutation 用于哪个操作?
有没有更好的方法来做到这一点?
【问题讨论】:
标签: google-cloud-dataflow apache-beam google-cloud-bigtable