当前位置: 首页 > 知识库问答 >
问题:

删除Apache Beam 2.2.0中的Bigtable行

花俊雄
2023-03-14

在数据流1中。x版本,我们可以使用CloudBigtableIO。writeToTable(TABLE\u ID)创建、更新和删除Bigtable行。只要将DoFn配置为输出变异对象,它就可以输出Put或Delete,以及CloudBigtableIO。writeToTable()已成功创建、更新或删除给定RowID的行。

新的Beam 2.2.0 API似乎使用了BigtableIO。write()函数,可与KV一起使用

感谢您的帮助!

**进一步澄清:

从本文件中:https://cloud.google.com/bigtable/docs/dataflow-hbase我理解,将依赖项ArtifactID从bigtable hbase数据流更改为bigtable hbase beam应该与beam 2.2.0版本兼容,本文建议使用CloudBigtableIO以旧方式进行Bigtble写入(并因此删除)。WriteTable()。但是,这需要从com导入。谷歌。云bigtable。发布说明中建议的数据流依赖项系列已被弃用,不应使用(实际上,它似乎与新的配置类等不兼容)

**进一步更新:

看起来我的pom.xml在从bigtable-hbase-dataflow更改为bigtable-hbase-束artifactID后没有正确刷新。项目更新后,我可以从com.google.cloud.bigtable.beam.*分支导入,这似乎至少适用于最小的测试。

然而:看起来现在有两个不同的突变类:com.google.bigtable.v2。突变org.apache.hadoop.hbase.client.突变

为了让所有的东西协同工作,必须正确地指定哪个突变用于哪个操作?

有没有更好的方法?

共有2个答案

晁砚
2023-03-14

我建议您应该继续使用CloudBigtableIObigtable-hbase-束。它不应该与bigtable-hbase-dataflow中的CloudBigtableIO有太大不同。

CloudBigtableIO使用HBaseorg.apache.hadoop.hbase.client.突变并将它们转换为Bigtable等效值

乐正远航
2023-03-14

不幸的是,Apache Beam 2.2.0没有提供用于删除Bigtable中整行(包括行键)的本机接口。唯一完整的解决方案是继续使用CloudBigtableIO类,正如您已经提到的那样。

另一种解决方案是从行中删除所有单元格。这样,您就可以完全继续使用BigtableIO类。但是,此解决方案不会删除行键本身,因此存储行键的成本仍然存在。如果您的应用程序需要删除许多行,则此解决方案可能并不理想。

import com.google.bigtable.v2.Mutation
import com.google.bigtable.v2.Mutation.DeleteFromRow

// mutation to delete all cells from a row
Mutation.newBuilder().setDeleteFromRow(DeleteFromRow.getDefaultInstance()).build()
 类似资料:
  • Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。这些应用对Bigtable提出的要求差异非常大,无论是在数据量上(从URL到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时数据服务)。尽管应用

  • 我想删除phpmyadmin中的第一行,但我有问题。我没有得到任何SQL错误。 PHP代码 HTML 另一个按钮 我没有找到任何解决办法。我不确定出了什么问题。你能帮帮我吗?

  • 我试图通过联接表的一个外键级联删除联接表中的行,它有另一个与之相关的表,我也想删除与此ID相关的所有行。看起来像下图。当我使用会话时。使用hibernate删除(reqCandObject)它工作正常,并通过从候选jobReq表中删除一个条目以及相关注释进行级联。但是,我想删除所有具有特定候选ID的候选项(并删除注释)。我尝试了下面的函数,但与nice hibernate不同。删除(对象)函数,此

  • 问题内容: 我正在使用Oracle数据库,但对Drop和Purge命令有些困惑。实际上,对于我来说,两者都做同样的事情。从数据库中删除带有模式的表。两者的主要区别是什么? 删除表表名; 删除表表名清除; 问题答案: 通常,如果表被删除,则将其移入回收站(从Oracle 10g开始)。但是,如果还指定了purge修饰符,则无法从数据库中删除(完全)删除该表。

  • 问题内容: 我有一个Dockerfile扩展了声明一个的图像。有没有一种方法可以覆盖指令,从而“删除”指令? 问题答案: 没有。 这样做的唯一方法是,如果您克隆用作基础图像(in中的一个)的图像,然后手动删除该指令。然后构建它并用作您的基础。

  • 问题内容: 我需要删除JTable中的所有行。 我已经尝试了以下两种方法: 和 两者都不会删除所有行。有任何想法吗? 问题答案: 以下代码为我工作: