Unterschied zwischen „Show“ und „Collect“ in Apache Spark

Gepostet von Sathish Kumar Srinivasan Monday, Mar 17, 2025

Bei der Arbeit mit Apache Spark, insbesondere mit DataFrames, werden häufig zwei Methoden verwendet : show()und collect(). Beide können zwar zur Datenüberprüfung verwendet werden, dienen jedoch unterschiedlichen Zwecken und sollten in unterschiedlichen Szenarien eingesetzt werden.

1. show() verstehen

Definition

show()wird verwendet, um den Inhalt eines DataFrames tabellarisch auf der Konsole anzuzeigen. Es dient in erster Linie zum Debuggen und Anzeigen einer begrenzten Anzahl von Zeilen.

Syntax

# Show default number of rows (20) with truncated columns 
df.show()

# Show specific number of rows (e.g., 5) with truncated columns
df.show(5)

# Show specific number of rows without truncation
df.show(5, truncate=False)


Eigenschaften

  • Zeigt Daten in einem lesbaren Format an.
  • Gibt kein Python-Objekt zurück; druckt einfach die Ausgabe.
  • Sammelt keine Daten zum Treiber.
  • Standardmäßige Kürzung langer Zeichenfolgen.

Wann sollte show() verwendet werden?

  • Debuggen und schnelle Überprüfung eines DataFrame.
  • Überprüfen der Datentransformationen und -struktur, ohne vollständige Daten zu erfassen.
  • Vermeidung übermäßiger Speichernutzung, da nur eine begrenzte Anzahl von Zeilen angezeigt wird.

Beispiel

from pyspark.sql import SparkSession 
from pyspark.sql import Row


spark = SparkSession.builder.appName("example").getOrCreate()


data = [Row(name="Alice", age=25), Row(name="Bob", age=30), Row(name="Charlie", age=35)]
df = spark.createDataFrame(data)

df.show()


Ausgabe:

Name Alter
Alice 25
Bob 30
Charlie 35

2. collect() verstehen

Definition

collect()ruft alle Zeilen eines DataFrame ab und übergibt sie dem Treiber als Liste von Row-Objekten.

Syntax

# Collect all rows into a Python list 
rows = df.collect()


Eigenschaften

  • Gibt eine Liste von Row-Objekten zurück.
  • Bringt alle Daten zum Treiber.
  • Kann Speicherprobleme verursachen, wenn der Datensatz zu groß ist.

Wann sollte collect() verwendet werden?

  • Wenn Sie Operationen an Daten lokal in Python durchführen müssen.
  • Beim Arbeiten mit kleinen Datensätzen, die in den Speicher passen.
  • Beim Konvertieren eines Spark-DataFrame in einen Pandas-DataFrame (df.toPandas() verwendet intern collect()).

Beispiel

rows = df.collect() 
for row in rows:

	print(row["name"], row["age"])


Ausgabe:

Alice 25 
Bob 30
Charlie 35


3. Wichtige Unterschiede zwischen show()undcollect()

Besonderheit zeigen() sammeln()
Ausgabetyp Druckt das Tabellenformat auf die Konsole Gibt eine Liste von Zeilenobjekten zurück
Speichernutzung Niedrig (zeigt begrenzte Zeilen an) Hoch (bringt alle Daten zum Treiber)
Anwendungsfall Debugging und schnelle Inspektion Lokale Datenverarbeitung in Python
Rückgaben Keiner Liste[Zeile]

4. Wann ist show() oder collect() zu wählen?

Szenario Verwenden Sie show() Verwenden Sie collect()
Anzeigen von Beispieldaten
Debuggen von Transformationen
Datenverarbeitung in Python
Konvertierung zu Pandas
Große Datensätze
Kleine Datensätze (falls in Python erforderlich)

5. Abschließende Gedanken

  • **Verwenden Sie **``, wenn Sie nur einen begrenzten Teil Ihrer Daten überprüfen müssen, ohne die Speicherleistung zu beeinträchtigen.
  • **Verwenden Sie **`` nur, wenn Sie wirklich alle Daten in Python zur lokalen Verarbeitung benötigen, und stellen Sie sicher, dass der Datensatz klein genug ist, um in den Speicher zu passen.

Um Spark-Anwendungen zu optimieren und unnötigen Speicheraufwand zu vermeiden, ist es wichtig zu verstehen, wann show() und collect() verwendet werden sollten.