tispark读取tikv,join报错:"Error reading region .... Handle region task failed"

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

[TiDB 版本] 5.0.0 ,tispark 2.5

[问题描述] tispark读取tikv之后,进行join,会报错

日志: error.log (8.4 KB)

代码截图:

日志中错误显示 “Execution terminated due to exceeding the deadline”
说明是 tispark 在从 tikv 读取数据的时候,某些请求超时导致
能否提供一下以下信息:

  • tikv 数量
  • spark 使用资源数(core 数量)
  • table schema 以及 需要读取的数据量
  1. tikv 6个节点
  2. spark资源:
    executor_num:5
    executor_cores:5
    executor_memory: 15G
    executor.memoryOverhead: 6G
  3. table schema:table_schema.sql (3.4 KB)
    表总数据量:48972009
    本查询读取的目标数据量:10000804

能否提供一下 rs 的 plan?(维度表为空 和 不为空的情况)

sorry,刚才又试了一下,发现并不是因为维度表为空导致。

代码为:


日志(里面打了执行计划) :
error.log (12.4 KB)

怀疑是客户端并发太高导致tikv busy,能否把 executor_cores 改成 1 试一下?
另外麻烦运行一下 select ti_version() 看下代码的版本

ti_version :
Release Version: 2.5.0-SNAPSHOT
Git Commit Hash: 5b17f84f859296a2bac9d973eec349f24becbd04
Git Branch: master
UTC Build Time: 2021-04-29 08:26:59
Supported Spark Version: 3.0 3.1
Current Spark Version: 3.0.1
Current Spark Major Version: 3.0
TimeZone: Asia/Shanghai

我把execurot_cores改成1仍然不行

能否测试一下下面的参数?
executor_num: 2
executor_cores: 1
executor_memory: 15G
executor.memoryOverhead: 6G
spark.tispark.table.scan_concurrency=10
另外能否用这个工具 https://metricstool.pingcap.com/ 导出一份 grafana 上 tikv 的监控数据?

wf-resource-Overview_2021-04-30T05_32_57.648Z.json (324.6 KB)
这个是overview里面的tikv细节。

按照你给的那几个参数试了试,也不行,同样的错误

麻烦导出一下以下几个页面:

  1. tikv detail
  2. tikv summary

时间范围选择 spark 任务出错的时间段

wf-resource-TiKV-Details_2021-05-06T02 34 52.833Z.json (4.4 MB)

wf-resource-TiKV-Summary_2021-05-06T02 36 45.540Z.json (753.4 KB)

从监控上看 coprocessor 请求没有超时,但是从请求返回错误中看 tikv 返回了 “Execution terminated due to exceeding the deadline” 错误

是的,spark任务日志中也报这个错误

是否方便编辑一下 grafana 的图的表达式,看下 p99999 ?

确实有超过2分钟的请求

spark.tispark.table.scan_concurrency 这个参数方便再减少一点试试吗?例如设成 2

刚才设置成2,还是不行,同样的错误

如果是 tikv 忙不过来,是不是 kv 节点资源比较小或者本身压力比较大,如果这是数据分析计算的任务,可以考虑用 tiflash 分流到列存做。

麻烦再导出一下以下几个页面:

  1. tikv detail
  2. tikv summary