1. A method comprising: receiving re-partitioning data describing, for each of a plurality of server nodes, a quantity of data blocks to be sent to each of the plurality of server nodes; determining a sender order for the plurality of server nodes by using the re-partitioning data to sort, in descending order, the plurality of server nodes by a total quantity of data blocks to be sent; populating, in the sender order, a network schedule comprising a plurality of time slots, wherein each of the plurality of time slots specifies, for each of the plurality of server nodes as a sender node, at most one receiver node, of the plurality of server nodes, to send a data block over a network, wherein each of the plurality of time slots specifies a particular node no more than once, and wherein the at most one receiver node is specified based at least on having a largest possible quantity of data blocks to be received by the sender node according to the re-partitioning data; causing the plurality of server nodes to re-partition according to the network schedule; wherein the method is performed by one or more computing devices.