This makes the API confusing.  The user will pass in the number of partitions she wants, but the actual number used will depend on a configuration value.  It's not obvious without code diving.

Options to make this clearer are 1) include both values in the constructor, or 2) leave the class as it was previously and just make sure you pass in the number of partitions you actually want (precompute the value of `numPartitions * subBatchSize`).

I lean towards number 2.