Vyřešil jsem svůj problém. Důvodem nekonzistentních počtů byl MongoDefaultPartitioner který obaluje MongoSamplePartitioner který používá náhodný výběr. Abych byl upřímný, je to pro mě docela zvláštní výchozí nastavení. Osobně bych raději měl místo toho pomalý, ale konzistentní oddíl. Podrobnosti o možnostech rozdělování oddílů lze nalézt v oficiálních možnostech konfigurace dokumentaci.
kód:
val df = spark.read
.format("com.mongodb.spark.sql.DefaultSource")
.option("uri", "mongodb://127.0.0.1/enron_mail.messages")
.option("partitioner", "spark.mongodb.input.partitionerOptions.MongoPaginateBySizePartitioner ")
.load()