向Hbase表添加多个值

时间:2015-07-14 07:59:33

标签: hbase

我使用Mapreduce将数据插入到我的Hbase表中。因为我无法插入图像所以我只是将我的Hbase表描述如下:

{
  "rowkey1": {
    File: {
      source: "path to file"
    }
    Features: {
      feature1: "value 1"
      feature1: "value 2"
    }
  }
  ......
}

在地图功能中,我将获得所有值:"文件路径","值1","值2"插入" rowkey1"。

但这里的问题是我们只能同时为1个系列的1个系列放1个值。

public void map(Text key, BytesWritable bytes, Context context)throws IOException {
Put put = new Put(key.getBytes());
put.add(family, qualifier, bytes.getBytes());
try {
context.write(new ImmutableBytesWritable(key.getBytes()), put);
} catch (InterruptedException e) {
e.printStackTrace();
}

所以我的问题是是否可以同时将这些值插入Hbase表。

由于

1 个答案:

答案 0 :(得分:0)

你不能做类似以下的事情。

map(..) {
   ...
   for(value: valueList) {
    put = new Put(...)
    put.add...
    context.write(new ImmutableBytesWritable(key.getBytes()), put);
   }
}

您可以在一次context.write()次迭代中多次执行map次。 虽然如果每map的迭代次数非常大,那么它可能效率不高。 (在这种情况下考虑不同的设计或方法)

如果我不正确地理解您的问题,请随时纠正我。