如何避免多个job同时写入一张表导致job失败

请问一下,有多个job在同时提交运行的情况下,他们会竞争写入一张表而导致job失败这个情况,有没有办法引入锁等待来让job之间避免冲突?我现在多个job都是用的loadTable("dfs://...", "...").append!(memTable)的方法写入的

请先 登录 后评论

1 个回答

wale

可以试试设置事务写入的原子性层级为’CHUNK’https://docs.dolphindb.cn/zh/help/FunctionsandCommands/CommandsReferences/s/setAtomicLevel.html 。

  • 设置为’CHUNK’,写入事务的原子性层级为分区。若一个事务写入多个分区时,某分区被其它写入事务锁定而出现冲突,系统会完成其他分区的写入,同时对之前发生冲突的分区不断尝试写入,尝试数分钟后仍冲突才放弃。此设置下,允许并发写入同一个分区,但由于不能完全保证事务的原子性,可能出现部分分区写入成功而部分分区写入失败的情况。同时由于采用了重试机制,写入速度可能较慢。

请先 登录 后评论