Werden Datenextrakte schneller ausgeführt, wenn ein DataFrame sortiert wird, bevor er als Parquet-Dateien beibehalten wird.Verbesserungen der Spark-Leistung durch Speichern sortierter Parquet-Dateien
Angenommen, haben wir die folgende peopleDf
Datenrahmen (so tun, als diese eine Probe und die wirkliche hat 20 Milliarden Zeilen):
+-----+----------------+
| age | favorite_color |
+-----+----------------+
| 54 | blue |
| 10 | black |
| 13 | blue |
| 19 | red |
| 89 | blue |
+-----+----------------+
Lassen Sie uns sortierten und unsortierten Versionen dieses Datenframe-Dateien Parkett auszuschreiben.
peopleDf.write.parquet("s3a://some-bucket/unsorted/")
peopleDf.sort($"favorite_color").write.parquet("s3a://some-bucket/sorted/")
Gibt es Performance-Gewinne, wenn basierend auf favorite_color
in den sortierten Daten und macht einen Datenextrakt zu lesen?
val pBlue1 = spark.read.parquet("s3a://some-bucket/unsorted/").filter($"favorite_color" === "blue")
// is this faster?
val pBlue2 = spark.read.parquet("s3a://some-bucket/sorted/").filter($"favorite_color" === "blue")