Is there a good reason to have an apply() that both writes the splits file and then creats a partitioner based on that file? Or should it be two calls by the client, one like TileIdPartitioner.writeSplits (or even SplitsGenerator.writeSplits), and another call to the read it in.