使用Java client batchPut批量导入数据到tikv报大量warning

【 TiDB 使用环境】
没有用tidb,tikv 5.3.0

【概述】 场景 + 问题概述
使用Java client 3.1.2 进行batchPut,报了大量的warning
这样用的batchPut:
dataBatch.grouped(5000).foreach(batch => db.batchPut(batch))

[WARN] - org.tikv.common.operation.RegionErrorHandler.handleRegionError(RegionErrorHandler.java:120) - Stale Epoch encountered for region [{Region[2] ConfVer[5] Version[5] Store[1
] KeyRange[\n\000\000\000\002\000\000\000\000\025\364\n\217]:[]}]

[WARN] - org.tikv.common.operation.RegionErrorHandler.handleRegionError(RegionErrorHandler.java:65) - NotLeader Error with region id 40 and store id 1, new store id 4

[WARN] - org.tikv.common.operation.RegionErrorHandler.handleRegionError(RegionErrorHandler.java:161) - Unknown error message: “Raft raft: proposal dropped”
for region [{Region[8] ConfVer[5] Version[7] Store[1] KeyRange[\n\000\000\000\002\000\000\000\000\005\254|\365]:[\n\000\000\000\002\000\000\000\000\006\360\340\317]}]

非常多的warning,不知是什么原因?

麻烦补充一下TiKV 的 log ,我们看一下 TiKV log 上面的报错哈。

这些 warning 属于正常日志(写入一些数据后, region 会分裂,客户端会遇到一些错误,通过客户端自动重试机制能恢复),主要看下

  1. 数据有没有正确导入?
  2. 导入的速度是多少?是否符合预期?

数据正常导入,但速度太慢了。10亿条数据,每条数据不超过1KB。(3PD,3TIKV)

tikv采用默认配置要12个小时,然后我配置了一下tikv,缩减到了6个半小时,还是太慢了。
以下是我的配置,还请指教一下不考虑读的情况下怎么配置能让tikv全速导入数据?

tikv:
server.status-thread-pool-size: 5
server.grpc-raft-conn-num: 2
server.grpc-concurrent-stream: 10240
server.max-grpc-send-msg-len: 2147483647
server.raft-client-queue-size: 81920
server.grpc-stream-initial-window-size: 1GB
coprocessor.batch-split-limit: 100
rocksdb.max-background-flushes: 5
rocksdb.writable-file-max-buffer-size: 256MB
rocksdb.bytes-per-sync: 1GB
rocksdb.wal-bytes-per-sync: 1GB
raftstore.store-pool-size: 16
raftstore.store-io-pool-size: 8
rocksdb.max-background-jobs: 8
raftdb.max-background-jobs: 8
rocksdb.max-sub-compactions: 5

有2个方法可以试一下:

  1. 使用这个工具进行导入 https://github.com/tikv/migration/blob/main/online-bulk-load/README.md
  2. 使用 batchput 并且加上一些优化,例如先把数据进行排序,再调用 batchput,另外调用 batchput 也可以并发(把排好序的数据分成 10 分,并发导入)

我试试,感谢。