向 Hbase 添加多个值 table

Add multiple values to Hbase table

我正在使用 Mapreduce 将数据插入我的 Hbase table。因为我不能插入图片所以我只描述我的 Hbase table 如下:

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

在 map 函数中,我将获取所有值:"path to file"、"value 1"、"value 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 table。

谢谢

你不能做类似下面的事情吗?

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

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

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