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

hbase - 如何在HBase BulkLoad时有效删除不再需要的列?

昌乐生
2024-05-06

HBase BulkLoad如何处理删除旧值。
目前业务是每天将海量数据通过BulkLoad导入到HBase,但遇到了一个数据无法很好清理的问题。
简单举个例子:
18号,user表中有rk=007,列簇c,列簇c中有name,age两列
19号,user表中有rk=007,列簇c,列簇c中有name一列
如何在19号删除age这一列,毕竟,原始数据中已经没有age这列了,如果19号不删除的话,查出来就是脏数据了。

1.表没法设置TTL为一天或24+N小时(业务)。
2.不想在构建KV时打上删除标识,毕竟不是真正删除。
3.构建布隆也很麻烦,要记录每一个rk。
4.没法构建日期表(每天一张user表,user_date)

共有1个答案

郎弘壮
2024-05-06

在处理HBase的BulkLoad和删除不再需要的列时,确实有一些挑战。由于HBase是一个面向列的NoSQL数据库,它的设计并不支持传统的行级删除操作。但你可以采用以下几种策略来处理这个问题:

  1. 使用版本控制:HBase支持列的版本控制。你可以在写入数据时,为每个列设置一个版本号。然后,在读取数据时,只选择那些版本号小于或等于当前日期的列。这样,你就可以在不真正删除列的情况下,达到忽略旧版本列的效果。
  2. 构建和维护一个删除列的列表:你可以构建一个单独的表或数据结构,用于记录需要删除的列。然后,在查询数据时,先检查这个列表,如果某个列在列表中,就不返回这个列。这种方法需要额外的维护工作,但可以避免在构建KV时打上删除标识。
  3. 使用过滤器:HBase支持在查询时使用过滤器。你可以创建一个过滤器,用于排除那些不再需要的列。这样,你就可以在读取数据时,只获取到那些需要的列。

对于你的具体情况,由于你不能设置TTL,不能构建日期表,也不能在构建KV时打上删除标识,我建议你尝试使用版本控制或构建和维护一个删除列的列表这两种方法。

另外,对于HBase的BulkLoad,你可以考虑在导入数据之前,先对数据进行预处理,删除那些不再需要的列。这样,你就可以避免在HBase中处理这些脏数据。

请注意,以上方法都可能需要你修改现有的数据模型和查询逻辑,因此在实施前需要仔细考虑和测试。

 类似资料:
  • 有人知道我为什么得到这种阵列吗?我只想要下面这部分。我需要删除这些mysql连接和其他不需要的数组。 下面的代码显示了我如何获得该数组。当I

  • 问题内容: 假设我需要一个模块并执行以下操作: 然后,我要拿走模块b(即清理缓存)。我该怎么办? 原因是我想动态加载/删除或更新模块,而无需重新启动节点服务器。任何想法? -------更多--------根据删除require.cache的建议,它仍然不起作用… 但是,当我呼叫b时,它仍然存在!它仍然可以访问。除非我这样做: 不知道这是否是处理该问题的好方法。因为如果以后再修改b.js,我又需要

  • 问题内容: 我正在通过批处理文件运行文件 批处理文件: SQL文件abc.sql: Output.txt: 请帮助我删除output.txt文件开头和结尾的多余数据。 问题答案: 似乎是您要找的东西; [-沉默的]](https://docs.oracle.com/cd/B10501_01/server.920/a90842/ch4.htm#1006196) 禁止所有SQL * Plus信息和提示

  • 我正在设置我的第一个Ionic React应用程序。我使用Ionic 5创建了一个应用程序并使用了应用内购买2插件。 我想测试一下,所以我把签名的APK上传到Play商店。 当我查看Play Store上的应用程序包详细信息时,我发现它需要几个不必要的权限: 所需权限(13) Android准许ACCESS_Rough_LOCATION,android。准许访问android的FINE_位置。准许

  • 我正在做一个项目,我必须从PDF中提取文本数据。 我能够从PDF中提取文本,但提取的文本有时包含我想从中剥离的行。 这是不需要的线条的例子- 国际标准书号0-7225-3293-8。第一部分第二部分结语 第1/94页 这里有一个很好的例子(我想保留) 当男孩带着他的牛群来到一座废弃的教堂时,夜幕已经降临。 我想多睡一会儿,他想。那天晚上他做了和一周前一样的梦 不同的PDF可以给出不同的无用行。 我

  • 日安! 我想我已经阅读了几乎所有与PHP和BOM相关的问题,但仍然没有找到适合我的问题的答案。所以我在这里: 我有一个PHP脚本(loader.PHP),它第一次运行时会生成一个配置文件(_config.PHP),在这个脚本中,我只存储一些与第一次调用的环境有关的变量。如果_config。php文件已经存在,我需要它在加载器中。php 一切正常,但问题是_config。php需要创建为UTF8。在