我看到有两个 API 可用于写入 GCP BigTable:
BigTableIO.write()
与 CloudBigtableIO.CloudBigtableSingleTableBufferedWriteFn
。我正在开发一个数据流管道,以从一个 BigTable 读取数据并将处理后的输出存储在另一个 BigTable 中。处理负载很大——10TB。
我想知道根据大数据集写入BigTable的要求,使用哪个API。
根据您的用例,强烈建议使用 CloudBigTableIO API,因为您正在编写 Dataflow 管道。
BigtableIO
类来自 Beam SDK,而 CloudBigtableIO
类来自 Google。
一些 CloudBigTableIO 的优势包括:
截至 2023 年 8 月的答复(来自内部问答,分享以获得更好的可见性)
从技术上讲,它们是两种不同的实现。
Apache Beam 的 BigtableIO 使用 Cloud Bigtable Protos 来存储读取结果和突变。
CloudBigtableIO 使用 HBase 结果和 Puts。
由于两种写入都是通过批量突变完成的,因此对于单个表的大容量写入没有任何偏好。应该没关系。用户可以继续使用现有的实现。两者都被大量使用并且得到积极维护。
更新 Beam 的 HBaseIO 以与 Bigtable 的 hbase 适配器兼容(最重要的是可扩展)是一个长期目标。 HBaseIO 的一些最新更新(大约从 Beam 2.46.0 开始)反映了这一努力。