【发布时间】:2014-11-28 09:32:23
【问题描述】:
谁能告诉我什么是满足我要求的最佳方式。
我有以下
- 一个 Hbase 表
- HDFS 中的输入文件
我的需求如下
- 读取输入文件并获取密钥。使用 key 从 Hbase。
- 进行比较以检查。
- 如果比较失败,插入
- 如果比较成功则更新。
我知道我可以使用 get 获取数据并将其写回。这是前进的最佳方式吗?我希望我会使用 mapreduce 以便我可以让进程并行运行。
【问题讨论】:
谁能告诉我什么是满足我要求的最佳方式。
我有以下
我的需求如下
我知道我可以使用 get 获取数据并将其写回。这是前进的最佳方式吗?我希望我会使用 mapreduce 以便我可以让进程并行运行。
【问题讨论】:
HBase 有一个 checkAndPut() 和一个 checkAndDelete() 操作。如果您具有期望的值,它允许您执行 put 或 delete(如果您不关心值而只关心键,则比较 = NO_OP)。 https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html
【讨论】:
根据您问题的大小,我实际上在这里推荐一种稍微不同的方法。虽然在 MapReduce Job 中实现 HBase puts 可能是可行的,但这听起来是一项相当复杂的任务。
我建议将数据从 HBase 加载到 MapReduce 中,连接这两个表,然后将它们导出回 HBase。 使用 Pig 这将很容易实现。 看看Pig HBaseStorage。 走这条路,您将加载两个文件,加入它们,然后写回 HBase。如果只是比较键,这可以在 5 行 PigLatin 中实现。
HTH
【讨论】: