我使用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表。
由于
答案 0 :(得分:0)
你不能做类似以下的事情。
map(..) {
...
for(value: valueList) {
put = new Put(...)
put.add...
context.write(new ImmutableBytesWritable(key.getBytes()), put);
}
}
您可以在一次context.write()
次迭代中多次执行map
次。
虽然如果每map
的迭代次数非常大,那么它可能效率不高。 (在这种情况下考虑不同的设计或方法)
如果我不正确地理解您的问题,请随时纠正我。