向Hbase表中添加多个值

向Hbase表中添加多个值,hbase,Hbase,我正在使用Mapreduce将数据插入我的Hbase表。因为我不能插入图像,所以我只描述我的Hbase表如下: { "rowkey1": { File: { source: "path to file" } Features: { feature1: "value 1" feature1: "value 2" } } ...... } 在映射函数中,我将得到的所有值都是:“文件路径”、“值1”、“值2”以插入到“r

我正在使用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表

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();
}

谢谢

您不能做如下操作吗

map(..) {
   ...
   for(value: valueList) {
    put = new Put(...)
    put.add...
    context.write(new ImmutableBytesWritable(key.getBytes()), put);
   }
}
您可以在一次
map
迭代中多次执行
context.write()。
虽然如果每个
map
的迭代次数非常大,但可能效率不高。(在这种情况下,考虑不同的设计或方法)


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

谢谢您的回答。事实上,我是Hbase的新手,所以这就像一个愚蠢的问题。