我想知道该batchsize
选项对使用 spark jdbc 的插入操作有什么影响。这是否意味着使用类似于大容量插入的一个插入命令进行大容量插入,或者是在最后提交的一批插入命令?
有人可以澄清一下,因为文档中没有明确提到这一点吗?
我想知道该batchsize
选项对使用 spark jdbc 的插入操作有什么影响。这是否意味着使用类似于大容量插入的一个插入命令进行大容量插入,或者是在最后提交的一批插入命令?
有人可以澄清一下,因为文档中没有明确提到这一点吗?
根据源码,该选项batchsize
用于executeBatch
方法 of PreparedStatement
,可以将一批命令提交到数据库执行。
关键代码:
val stmt = conn.prepareStatement(insertStmt)
while (iterator.hasNext) {
stmt.addBatch()
rowCount += 1
if (rowCount % batchSize == 0) {
stmt.executeBatch()
rowCount = 0
}
}
if (rowCount > 0) {
stmt.executeBatch()
}
回到你的问题,确实有
一批插入命令
但是,该语句gets committed at the end
是错误的,因为只有部分插入成功执行是可以的。这里没有额外的交易要求。顺便说一句,如果未指定,Spark 将采用默认隔离级别。