批量删除hbase记录的最快,最有效的方法是什么? Hbase客户端API还是MapReduce作业?
答案 0 :(得分:1)
除非您知道要删除的单元格的行键,否则HBase Client API不允许进行批量删除。
可以利用BulkDeleteEndpoint根据扫描仪的结果进行批量删除。
答案 1 :(得分:1)
对于大型连续数据集,最快速,最有效的方法是删除整个区域,删除其HDFS目录并从META表中删除它们。这实际上几乎没有IO,所以它几乎是免费的。 但请注意,目前尚未通过高级API直接提供,因此您必须对其进行脚本/编码才能完成。
以下是HBase邮件列表中有关如何使用shell执行此操作的示例。
- 从shell中关闭该区域(使用shell了解其工作原理 帮助 - 不要取消分配)
- 然后只需在区域中删除HDFS中的区域内容即可 关闭(HDFS中的区域目录名称与区域编码名称相同, 区域名称的最后一部分 - 检查refguide)。
- 在HDFS中删除后,调用assign region。
醇>
来源http://search-hadoop.com/m/YGbbl9ZaSQ2HLT&subj=Re+Delete+a+region+from+hbase
答案 2 :(得分:0)
HBase Client API更快,因为您在使用MapReduce时直接在数据库上执行操作,这意味着任务将在作业上运行,并且根据我的经验需要时间。 超过该值,HBase将允许您在Map系列中运行MapReduce无法执行的特定操作。