如何通过从文本文件中读取行键来删除HBASE表中的行



在我的一个项目中,我需要通过删除不再与银行关联的客户的行来维护一个HBASE表。

我得到一个包含customerid(也是HBASE表中的行键)的文本文件。文本文件中的每一行都包含唯一的客户id,用于从表中删除客户详细信息。

我不认为我可以使用TableMapReduceUtil。initTableMapperJob启动一个map-only job,因为mapclass期望输入来自表本身,而不是HDFS上的文本文件。

您可以使用NLineInputFormatTableOutputFormat来编写您的map reduce作业。

使用Tableoutputformat,您可以在映射器中添加context.write(key, new Delete(key.toString().getBytes()))

Map reduce可以作为Hbase的输入(源)和输出(汇)。在您的示例中,您需要编写自己的map reduce来从输入中读取数据,然后使用API

提供的reducer。
TableMapReduceUtil.initTableReducerJob("targetTable",null,job);
job.setNumReduceTasks(0);

第二个参数为null,因为您正在使用API提供的reducer。您只需要将行键和delete作为映射器输出,然后reducer将其拾取并执行任务。你可以在这里找到它的基本用法。不是您的确切解决方案,而是mapreduce和hbase使用背后的概念

相关内容

  • 没有找到相关文章