0

我正在学习 HBase。我知道如何使用 Hadoop MapReduce 编写 Java 程序并将输出写入 HDFS;但现在我想将相同的输出写入 HBase,而不是 HDFS。它应该有一些类似的代码,就像我之前在 HDFS 中所做的那样:

context.write(key,value);

谁能给我一个例子来实现这一点?

4

2 回答 2

2

这是执行此操作的一种方法:

public static class MyMapper extends TableMapper<ImmutableBytesWritable, Put>  {

public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException {
    // this example is just copying the data from the source table...
    context.write(row, resultToPut(row,value));
}

private static Put resultToPut(ImmutableBytesWritable key, Result result) throws IOException {
    Put put = new Put(key.get());
    for (KeyValue kv : result.raw()) {
        put.add(kv);
     }
    return put;
   }
}

您可以在此处阅读有关表映射器的信息

于 2013-09-03T23:47:17.070 回答
2

在设置作业时,您应该能够使用 TableOutputFormat,而不是使用 FileOutputFormat。

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html

你仍然需要稍微修改你的 Reducer。

上面页面的引用:

转换 Map/Reduce 输出并将其写入 HBase 表。KEY 被忽略,而输出值必须是 Put 或 Delete 实例。

于 2013-09-04T00:10:42.937 回答