[SPARK-3073] [PySpark] use external sort in sortBy() and sortByKey()

Using external sort to support sort large datasets in reduce stage.
Would be good to add a test that calls sortByKey on a large dataset here too, in addition to just testing the ExternalSorter separately.