If I understand correctly, the SQL query is executed within every task on each of the nodes and it is not set to be a local query. Correct?
If so then what you are really doing is executing the SQL queries from all the nodes to all the nodes. This is bound to be inefficient. In essence what you want to do is make your tasks work at a local level only. Why not just switch to simple distributed closures and broadcast the same task to all the nodes but configure the SQL query within the task to execute as local one - setLocal(true). I mean you are already using ComputeTaskSplitAdapter which abstracts the only difference between closures: the capability to automatically assign jobs to nodes. Broadcasting the same task with a local query means the same task would execute on all the nodes in parallel and perform only a local query on the node it is running on. Then your tasks can proceed to do the required calculations and write the results etc. -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Distributed-Closures-VS-Executor-Service-tp11192p11758.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.