如何通过从文本文件

时间:2015-08-14 02:34:30

标签: hadoop mapreduce hbase

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

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

我认为我不能使用TableMapReduceUtil.initTableMapperJob来启动仅映射作业,因为mapclass期望输入来自表本身而不是HDFS上的文本文件。

2 个答案:

答案 0 :(得分:0)

您可以使用NLineInputFormatTableOutputFormat来编写地图缩减作业。

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

答案 1 :(得分:0)

Map reduce可以用作Hbase的输入(源)和输出(接收器)。在您的情况下,您需要编写自己的map reduce来从输入中读取数据,然后使用API​​提供的reducer

TableMapReduceUtil.initTableReducerJob("targetTable",null,job);
job.setNumReduceTasks(0);

第二个参数为null,因为您使用的是API提供的reducer。您只需要处理行键并删除作为映射器输出,并且reducer将其拾取并执行其工作。您可以找到基本用法here。不是您的确切解决方案,而是mapreduce和hbase使用背后的概念