Description
When calculating the distinct values for a pivot in RelationalGroupedDataset (https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/RelationalGroupedDataset.scala#L322), we sort before doing a take(maxValues + 1).
We should be able to improve this by adding a global limit before the sort, which should reduce the work of the sort, and by simply doing a collect to avoid multiple launching multiple stages as a part of the take.