我正在编写一份作业来扫描 HBase 表并删除某些行。我读过我应该批量删除并定期清除它们,而不是处理每个单独的删除或一次处理整个批次。我现在的代码相当于..
void addDeleteToBatch(Delete delete) {
deleteBatch.add(delete);
if (deleteBatch.size() >= 1000) {
flushDeletes();
}
}
void flushDeletes() {
if (!deleteBatch.isEmpty()) {
hbase.batchDelete("table_name", deleteBatch);
}
deleteBatch.clear();
log("batch flushed");
}
但是,我没有真正的理由选择 1000 作为最大批量大小。我找不到任何暗示一次应该批处理多少操作的资源。对此有什么指导方针吗?直觉上,似乎根本不批处理东西,或者只做非常小的批处理,效率会很低。看起来非常大的批量也很糟糕。是否存在效率最佳点?