这是因为多个批处理作业并发往同个分区写入数据了。
在DolphinDB database中,同一个分区不能被多个writer并发写入,当一个分区被某一个事务A锁定之后,另一个事务B试图再次去锁定这个分区时,系统立刻会抛出异常导致事务B失败回滚。详见https://github.com/dolphindb/...
我用三个线程并发往DolphinDB分布式表写入时,三个批处理作业有2个出现如下图所示错误,请问是什么原因?
def WriteDate(st, days){ startDate = st iteration = 100 startTime = startDate.datetime() t = database("dfs://forwardtekDdb1").loadTable("windTurbine") for(d in 0:days){ for(its in 0:864){ records = iteration tt = table(take(startTime + ((its*iteration)..(its*iteration+iteration - 1)), records) as ts) m = "tag" + format(1..63510, "000") for (i in 0: 73) { for (j in (i*870): (i*870+870)){ if (j < 18+i*870) tt[m[j]] = 20 + rand(10.0, records) else if (j == 869+i*870) tt[m[j]] = take(1.0, records) else{ tt[m[j]] = take(0.0, records) } } } t.append!(tt) } startTime=datetimeAdd(startTime,1,`d) } } startDate = {startDate} days = {days} threads = {threads} for(i in 0:threads){ submitJob("submit_write_dfs", "write data "+i, WriteDate,startDate,days) }
这是因为多个批处理作业并发往同个分区写入数据了。
在DolphinDB database中,同一个分区不能被多个writer并发写入,当一个分区被某一个事务A锁定之后,另一个事务B试图再次去锁定这个分区时,系统立刻会抛出异常导致事务B失败回滚。详见https://github.com/dolphindb/...