@mengxr Note that there are two maps done on lines 73 and 76. These won't create any shuffling of the data. The reduce on line 76 will create a shuffle, which will be combined, so that each node does not output anything other than one small vector of column -> sum. Then those few vectors get shuffled. Building a combiner for Array[Double] here and summing those isn't going to buy us anything.

Building a Dense SVD warrants another PR, since that will need a new implementation for SVD, new tests, documentation, and examples. I will do this in another PR, maybe at the same time as Dense square SVD, depending on what algorithm we decide.