【问题标题】:Add multiple values to Hbase table向 Hbase 表添加多个值
【发布时间】:2015-07-21 10:12:56
【问题描述】:

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

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

在 map 函数中,我将获取所有值:“文件路径”、“值 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 表。

谢谢

【问题讨论】:

    标签: hbase


    【解决方案1】:

    你不能做如下的事情吗?

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

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

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

    【讨论】:

    • 感谢您的回答。实际上,我是 Hbase 的新手,所以这就像一个愚蠢的问题。
    猜你喜欢
    • 2013-05-05
    • 2013-01-21
    • 2015-01-08
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多