使用Get / Put进行Hbase更新/插入

时间:2014-11-28 09:32:24

标签: mapreduce hbase

任何人都可以建议什么是满足我要求的最佳方式。

我有以下

  1. 一个Hbase表
  2. HDFS中的输入文件
  3. 我的要求如下

    1. 读取输入文件并获取密钥。使用密钥从中获取数据 HBase的。
    2. 做比较检查。
    3. 如果比较失败,请插入
    4. 如果比较成功更新。
    5. 我知道我可以使用get获取数据并将其写回。这是前进的最佳方式。我希望我能使用mapreduce,这样我就可以让这个过程并行运行。

2 个答案:

答案 0 :(得分:0)

HBase有一个checkAndPut()和一个checkAndDelete()操作。如果你有你期望的值,它允许你执行放置或删除(如果你不关心值而只关心键,则比较= NO_OP)。 https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html

答案 1 :(得分:0)

根据问题的大小,我实际上建议采用略有不同的方法。虽然在MapReduce Job中实现HBase put可能是可行的,但这听起来像是一项相当复杂的任务。

我建议将HBase中的数据加载到MapReduce中,加入两个表,然后将它们导出回HBase。 使用Pig这很容易实现。 看看Pig HBaseStorage。 走这条路线你要加载这两个文件,加入它们然后写回HBase。如果只有它,比较键,这可以通过5行PigLatin实现。

HTH