spark读取tidb,所有select出来的数据都在一个executor中,最后导致了oom

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】6.0.0
【复现路径】做过哪些操作出现的问题 spark查询tidb
【遇到的问题:问题现象及影响】
spark读取tidb,所有select出来的数据都在一个executor中,最后导致了oom,这是tidb本身的问题吗?
【资源配置】
【附件:截图/日志/监控】

spark读取方式的问题,建议用tidb的tispark读取tidb会获得更均匀的读取能力。spark的jdbc读取方式,如果是没有指定分区键(RDD分布),就会读取到一个executor中。

2 个赞

如果一次查询返回的数据量非常大,可能会导致 Spark executor 内存不足,从而触发 OOM 错误。在这种情况下,需要优化查询语句,将查询条件精确到最小范围,以减少返回的数据量

https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
JDBC 可以参考这里手动进行分区

如果查询涉及大量数据,可以尝试优化查询条件,例如添加索引、使用合适的过滤条件等,以减少读取的数据量