Description
Usage of GraphPartitionerFactory can be improved:
- defining custom partitioner needs extending 3 classes/interfaces, and defining multiple functions, which is more complex than needed
- range partitioners are randomly assigning excess, instead of having each partition/worker having 1 consecutive range
- if maxPartitions is reached, we might be creating number of partitions that is not divisible with number of workers