Aan de slagBegin gratis

Tussenresultaten opslaan

Zoals je in hoofdstuk 1 zag, is data kopiëren tussen R en Spark per definitie traag. Dat betekent dat data ophalen, zoals je in de vorige oefening deed, alleen moet wanneer het echt nodig is.

De pipe-operator is ideaal om bewerkingen aan elkaar te linken, maar in het algemeen kun je niet je hele analyse in één lange keten stoppen. Dit is bijvoorbeeld een slechte gewoonte, omdat je je code dan nooit kunt debuggen.

final_results <- starting_data %>%
  # 743 stappen achter elkaar gepiped
  # ... %>%
  collect()

Dat levert een dilemma op. Je wilt de resultaten van tussenstappen opslaan, maar je wilt ze niet collecten omdat dat traag is. De oplossing is compute() gebruiken om de berekening uit te voeren, maar de resultaten op te slaan in een tijdelijk dataframe op Spark. Compute neemt twee argumenten: een tibble en een variabelenaam voor het Spark-dataframe dat de resultaten opslaat.

a_tibble %>%
  # enkele berekeningen %>%
  compute("intermediate_results")

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

Er is een Spark-verbinding voor je aangemaakt als spark_conn. Een tibble die is gekoppeld aan de trackmetadata die in Spark is opgeslagen, is voorgedefinieerd als track_metadata_tbl.

  • Filter de rijen van track_metadata_tbl waarbij artist_familiarity groter is dan 0.8.
  • Bereken de resultaten met compute().
    • Sla de resultaten op in een Spark-dataframe met de naam "familiar_artists".
    • Ken het resultaat toe aan een R-tibble met de naam computed.
  • Bekijk de beschikbare Spark-gegevenssets met src_tbls().
  • Print de class() van computed. Merk op dat compute() in tegenstelling tot collect() een remote tibble teruggeeft. De data staat nog steeds in het Spark-cluster.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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 bewerken en uitvoeren