【问题标题】:Hbase Update/Insert using Get/Put使用 Get/Put 更新/插入 Hbase
【发布时间】:2014-11-28 09:32:23
【问题描述】:

谁能告诉我什么是满足我要求的最佳方式。

我有以下

  1. 一个 Hbase 表
  2. HDFS 中的输入文件

我的需求如下

  1. 读取输入文件并获取密钥。使用 key 从 Hbase。
  2. 进行比较以检查。
  3. 如果比较失败,插入
  4. 如果比较成功则更新。

我知道我可以使用 get 获取数据并将其写回。这是前进的最佳方式吗?我希望我会使用 mapreduce 以便我可以让进程并行运行。

【问题讨论】:

    标签: mapreduce hbase


    【解决方案1】:

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

    【讨论】:

    • 感谢您的评论。我对 Hbase 有点陌生,所以想知道我是否将 checkAndPut() 放在 mapreduce 中? ,以防万一您有任何我可以参考的链接也会有很大帮助。
    【解决方案2】:

    根据您问题的大小,我实际上在这里推荐一种稍微不同的方法。虽然在 MapReduce Job 中实现 HBase puts 可能是可行的,但这听起来是一项相当复杂的任务。

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

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多