LoslegenKostenlos loslegen

Zwischenergebnisse speichern

Wie du in Kapitel 1 gesehen hast, ist das Kopieren von Daten zwischen R und Spark grundsätzlich langsam. Das bedeutet, dass das Einsammeln der Daten, wie in der vorherigen Übung, nur dann erfolgen sollte, wenn du es wirklich brauchst.

Der Pipe-Operator ist super, um Befehle zur Datenmanipulation zu verketten. Im Allgemeinen kannst du aber keine komplette Analyse mit allem in einer einzigen Kette durchführen. Zum Beispiel ist das hier eine schlechte Praxis, weil du deinen Code nie debuggen können wirst.

final_results <- starting_data %>%
  # 743 Schritte hintereinander gepiped
  # ... %>%
  collect()

Das führt zu einem Dilemma. Du musst die Ergebnisse von Zwischenschritten speichern, willst sie aber nicht einsammeln, weil das langsam ist. Die Lösung ist, compute() zu verwenden: So berechnest du die Ergebnisse, speicherst sie aber in einem temporären Data Frame auf Spark. compute() nimmt zwei Argumente: ein Tibble und einen Variablennamen für den Spark Data Frame, der die Ergebnisse speichern soll.

a_tibble %>%
  # einige Berechnungen %>%
  compute("intermediate_results")

Diese Übung ist Teil des Kurses

Einführung in Spark mit sparklyr in R

Kurs anzeigen

Anleitung zur Übung

Eine Spark-Verbindung wurde als spark_conn für dich erstellt. Ein Tibble, das mit den in Spark gespeicherten Track-Metadaten verknüpft ist, wurde als track_metadata_tbl vordefiniert.

  • Filtere die Zeilen von track_metadata_tbl, bei denen artist_familiarity größer als 0.8 ist.
  • Berechne die Ergebnisse mit compute().
    • Speichere die Ergebnisse in einem Spark Data Frame namens "familiar_artists".
    • Weise das Ergebnis einem R-Tibble namens computed zu.
  • Sieh dir die verfügbaren Spark-Datensätze mit src_tbls() an.
  • Gib die class() von computed aus. Beachte: Im Unterschied zu collect() gibt compute() ein Remote-Tibble zurück. Die Daten liegen weiterhin im Spark-Cluster.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

computed <- track_metadata_tbl %>%
  # Filter where artist familiarity is greater than 0.8
  ___ %>%
  # Compute the results
  ___

# See the available datasets
___

# Examine the class of the computed results
___
Code bearbeiten und ausführen