Ich erstelle einen neuen Datenrahmen mit einer Handvoll Datensätze von einem Join.Zählen auf Spark Dataframe ist extrem langsam
val joined_df = first_df.join(second_df, first_df.col("key") ===
second_df.col("key") && second_df.col("key").isNull, "left_outer")
joined_df.repartition(1)
joined_df.cache()
joined_df.count()
Alles ist schnell (unter einer Sekunde) außer dem Count-Vorgang. Die RDD-Konvertierung beginnt und dauert buchstäblich Stunden. Gibt es eine Möglichkeit, die Dinge zu beschleunigen?
INFO MemoryStore: Block rdd_63_140 stored as values in memory (estimated size 16.0 B, free 829.3 MB)
INFO BlockManagerInfo: Added rdd_63_140 in memory on 192.168.8.52:36413 (size: 16.0 B, free: 829.8 MB)
INFO Executor: Finished task 140.0 in stage 10.0 (TID 544). 4232 bytes result sent to driver
INFO TaskSetManager: Starting task 142.0 in stage 10.0 (TID 545, localhost, executor driver, partition 142, PROCESS_LOCAL, 6284 bytes)
INFO Executor: Running task 142.0 in stage 10.0 (TID 545)
INFO TaskSetManager: Finished task 140.0 in stage 10.0 (TID 544) in 16 ms on localhost (executor driver) (136/200)
INFO ShuffleBlockFetcherIterator: Getting 0 non-empty blocks out of 200 blocks
INFO ShuffleBlockFetcherIterator: Started 0 remote fetches in 0 ms
INFO ShuffleBlockFetcherIterator: Getting 0 non-empty blocks out of 200 blocks
INFO ShuffleBlockFetcherIterator: Started 0 remote fetches in 0 ms
Evrything ist schnell unter 1 Sekunde, weil keine Operation stattfindet, bis Sie "count" erreichen. Lesen Sie mehr über [Lazy Evaluation in Spark hier] (https://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-operations) – philantrovert