谁能建议什么是满足我要求的最佳方法。
我有以下
- 一个 Hbase 表
- HDFS 中的输入文件
我的要求如下
- 读取输入文件并获取密钥。使用键从中获取数据赫巴斯。
- 做一个比较来检查。
- 如果比较失败,请插入
- 如果比较成功,请更新。
我知道我可以使用get来获取数据并将其写回。这是前进的最好方式吗?我希望我将使用 mapreduce,以便我可以让进程并行运行。
HBase 有一个 checkAndPut() 和一个 checkAndDelete() 操作,如果你有你期望的值,它允许你执行放置或删除(比较=NO_OP如果你不关心值,只关心键)。https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html
根据您的问题的大小,我实际上在这里推荐一种略有不同的方法。虽然在MapReduce作业中实现HBase放置可能是可行的,但这听起来像是一个相当复杂的任务。
我建议将数据从HBase加载到MapReduce中,连接两个表,然后将它们导出回HBase。使用Pig,这将很容易实现。看看Pig HBaseStorage。按照这条路线,您将加载两个文件,加入它们,然后写回 HBase。如果它的全部内容是比较键,这可以通过 5 行 PigLatin. 来实现。
呵呵