单 put 插入也很慢。
模拟key,一个真实 用户主键 + 时间戳,代码如下:
private void insert() {
TreeMap<String, String> orderedPairs = new TreeMap<>();
for (FurionSceneResult element : elements) {
// String key = String.format(tikvKey, element.getPrimaryKey(), element.getSceneId());
String key = String.format(tikvKey, "xxxxxxxxb_xxxxTuxxxsWV6Jxxxx", element.getSceneId());
String value = element.toHbaseString();
orderedPairs.put(key, value);
}
Map<ByteString, ByteString> kvPairs = new HashMap<>();
for (String key : orderedPairs.keySet()) {
kvPairs.put(ByteString.copyFromUtf8(key), ByteString.copyFromUtf8(orderedPairs.get(key)));
}
tiKVClient.batchPut(kvPairs, TTL);
log.info("==================== batchPut success ====================");
elements.clear();
}
可以写入,并且速度很快。
我想问一下,个人猜测,用户每天是 千万级别 ,这个的 scene 是 1000 ,因此我也无 key 会非常多,会引起找 region 慢,这里的 key 是如何影响写入过程的。