在开发中,突然遇到了发现Hbase的读取和写入变的非常慢,然后再次检查了代码,有两个地方更改后性能有大幅的提升,说明如下。
网上优化可能很多,这个只是我简单的实践记录。
1 读取优化
Scan操作时候设置缓存
result.setCaching(10000)
result.setBatch(5000)
2 写入优化
写入慢最后发现是没有控制一次发HBase的量,直接进行大量的数据一次性写入,造成HBase卡死的一样,更改如下:
val realSize = batchData.size()
if (realSize <= 5000) {
table.put(batchData)
} else {
val part = realSize / 5000
for (index <- 0 until part) {
table.put(batchData.subList(index * 5000, (index + 1) * 5000))
}
table.put(batchData.subList(part * 5000, realSize))
table.put(batchData.subList(0, 5000))
}
table.flushCommits()