public IEnumerable<IDataSetDefinition> Partition(IDataSetDefinition dataSetDefinition, int partitionCount) { var partitions = new List<IDataSetDefinition>(); var rangeConfig = dataSetDefinition as RangeDataSetDefinition; if (rangeConfig == null) { return partitions; } var numberOfEntries = (rangeConfig.End - rangeConfig.Start) / rangeConfig.StepSize; var partitionSize = numberOfEntries / partitionCount; var remainder = (numberOfEntries % partitionCount); for (BigInteger i = 0; i < partitionCount - 1; i++) { var newPartition = BuildNewPartition(rangeConfig, i, partitionSize, partitionSize); partitions.Add(newPartition); } // account for ranges that don't divide evenly into their step sizes var finalRange = remainder != 0 ? remainder : partitionSize; var finalPartition = BuildNewPartition(rangeConfig, partitionCount - 1, partitionSize, finalRange); partitions.Add(finalPartition); return partitions; }
public IEnumerable<IDataSetDefinition> Partition(IDataSetDefinition dataSetDefinition, int partitionSize) { throw new NotImplementedException(); }