spark+mysql上具有数百万行的批处理语句

eufgjt7s  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(287)

我在apachespark和scala上有一个etl,在某个阶段,程序使用jdbc方法将Dataframe写入mysql中的表中。
在以前的尝试中,我没有设置 rewriteBatchedStatements=true 在连接字符串中,这使得insert查询非常慢(对于200万条记录大约需要4.5个小时)。在搜索了一点之后,我发现了batched statements选项,正如我在本段开头所说的,并设置了值 batchSize=30 .
然而,这个程序在那个阶段崩溃了,给了我们一个机会

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

错误。
我看到有人建议改变 tx_location 在我的db上,从repeatable read到read committed并增加锁超时,但考虑到这意味着要么大量增加batchsize,要么将线程锁定一段难以置信的长时间。
有什么解决方案吗?或者我应该继续使用当前的“no batch statements”配置吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题