Hmmm... actually I did employ `mapPartitions` in [a previous commit](https://github.com/soulmachine/incubator-spark/blob/3bb714eaa3bdb7b7c33f6e5263c683f4c4beeddc/mllib/src/main/scala/org/apache/spark/mllib/classification/NaiveBayes.scala#L65), and then found out that I can let `reduceByKey` do both local combine and global reduce.  Do you think the previous version is more readable?  Also, from the perspective of performance, the `mapPartitions` one is slightly slower, since there's one more transformation, and the local combine phase of `reduceByKey` is useless.