我们正尝试使用多线程并行地从IgniteQueue中删除数据。
下面是在各个线程中调用的代码。
def dequeue(array: Array[Row]): Unit = {
val icfg= new IgniteConfiguration
icfg.setClientMode(true)
val ignite = Ignition.getOrStart(icfg)
val igniteQueue:IgniteQueue[Row] = ignite.queue("Ignite", 0, new CollectionConfiguration)
igniteQueue.removeAll(array)
}
出征不正常。
我是否需要更改配置?
测试:
队列数:7588
我们实施了循环来代替多线程,以便顺序测试removeAll 。
dataFrame.take(3).foreach(row => {
var array = /*array forming logic*/
dequeue(array)
})
迭代1:166
发布删除所有队列大小:7422
迭代2:192
发布删除所有队列大小:7230
迭代2:185
发布删除所有队列大小:7045
现在处于多线程
dataFrame.take(3).foreach(row => {
var array = /*array forming logic*/
val dequeueThread: ThreadDequeue = new ThreadDequeue(array)
pool.submit(dequeueThread)
})
ThreadDequeue类将具有dequeue方法。
主题1:166
发布删除所有队列大小:7416
线程2:192
发布删除所有队列大小:7414
主题2:185
发布删除所有队列大小:7259
顺序执行时,出队正常。但在多线程中,出列的计数不匹配。
先谢谢。