mapreduce - 写入HBASE中的多个表

标签 mapreduce hbase

我遇到这样的情况,我需要写入两个 hbase 表,例如表 1、表 2。每当表 1 上发生写入时,我需要对表 2 执行一些操作,例如增加表 2 中的计数器(比如触发)。为此,我需要在映射缩减程序的同一任务中访问(写入)两个表。我听说可以使用 MultiTableOutputFormat 来完成。但我找不到任何详细解释的好例子。请有人回答是否可以这样做。如果是这样我可以/应该怎么做。提前致谢。

请给我一个不应包含协处理器的答案。

最佳答案

要在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);

关于mapreduce - 写入HBASE中的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039668/

相关文章:

hadoop - 目录为空时如何防止 Hadoop 作业失败?

hadoop - 了解TextInputFormat

java - Hbase 1.0.0连接池

hadoop - org.apache.hadoop.hbase.client.NoServerForRegionException

hadoop - 如何运行 Hbase Java 示例?

hadoop - Apache Spark:挂起广播

mapreduce - 可用于使用 Hadoop/MapReduce 框架的集群

parallel-processing - "embarrassingly parallel"短语的来源

hadoop - hadoop上的读操作和一致性级别

java - hbase启动缓慢--调用观察程序时出错java.lang.NullPointerException : ZK is null