我在这里有一个情况,我需要写两个hbase表,比如table1,表2.每当表1发生写操作时,我需要对表2执行一些操作,例如增量表2中的计数器(如触发)。为此,我需要在map-reduce程序的相同任务中访问(写入)两个表。我听说可以使用MultiTableOutputFormat完成。但我找不到任何详细解释的好例子。请问有人可以回答是否可以这样做。如果是的话,我该怎么做/我该怎么做。提前致谢。写入HBASE中的多个表
请给我一个答案,不应该包括协处理器。
我在这里有一个情况,我需要写两个hbase表,比如table1,表2.每当表1发生写操作时,我需要对表2执行一些操作,例如增量表2中的计数器(如触发)。为此,我需要在map-reduce程序的相同任务中访问(写入)两个表。我听说可以使用MultiTableOutputFormat完成。但我找不到任何详细解释的好例子。请问有人可以回答是否可以这样做。如果是的话,我该怎么做/我该怎么做。提前致谢。写入HBASE中的多个表
请给我一个答案,不应该包括协处理器。
为此,您可以使用HBase Observer,您必须创建一个观察者并且必须在您的服务器上部署(仅适用于HBase版本> 0.92),它会自动触发到另一个表。
我认为HBase Observer具有类似概念的相似概念。
有关详细信息 -
https://blogs.apache.org/hbase/entry/coprocessor_introduction
写入到多个表中的map-reduce任务,你必须指定在作业配置。你是对的,这可以使用MultiTableOutputFormat完成。 通常为你使用像一个表:
TableMapReduceUtil.initTableReducerJob("tableName", MyReducer.class, job);
而是该写的:
job.setOutputFormatClass(MultiTableOutputFormat.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setNumReduceTasks(2);
TableMapReduceUtil.addDependencyJars(job);
TableMapReduceUtil.addDependencyJars(job.getConfiguration());
在写入数据表写的时候
现在为:
context.write(new ImmutableBytesWritable(Bytes.toBytes("tableName1")),put1);
context.write(new ImmutableBytesWritable(Bytes.toBytes("tableName2")),put2);