Java Spark+;MySQL

Java Spark+;MySQL,java,mysql,apache-spark,jdbc,Java,Mysql,Apache Spark,Jdbc,我在ApacheSpark和Scala上有一个ETL,在某个阶段,程序使用jdbc方法将数据帧写入MySQL中的表中 在以前的尝试中,我没有在连接字符串中设置rewriteBatchedStatements=true,这使得insert查询非常慢(对于200万条记录,大约需要4.5小时)。在搜索了一点之后,我发现了batched statements选项,正如我在本段开头所说的,并设置了值batchSize=30 然而,该程序在该阶段崩溃,造成严重后果 java.sql.BatchUpdateE

我在ApacheSpark和Scala上有一个ETL,在某个阶段,程序使用jdbc方法将数据帧写入MySQL中的表中

在以前的尝试中,我没有在连接字符串中设置
rewriteBatchedStatements=true
,这使得insert查询非常慢(对于200万条记录,大约需要4.5小时)。在搜索了一点之后,我发现了batched statements选项,正如我在本段开头所说的,并设置了值
batchSize=30

然而,该程序在该阶段崩溃,造成严重后果

java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
错误

我看到有人建议将数据库上的
tx\u位置
从REPEATABLE-READ更改为READ-Committed,并增加锁定超时,但考虑到这意味着要么大量增加batchsize,要么将线程锁定相当长的时间

有什么解决方案吗?或者我应该坚持当前的“无批处理语句”配置吗