Kom igångKom igång gratis

Lagra mellanliggande resultat

Som du såg i kapitel 1 är det i grunden långsamt att kopiera data mellan R och Spark. Det innebär att du bör samla in data med collect() – som i föregående övning – bara när det verkligen behövs.

Pipe-operatorn är mycket praktisk för att kedja ihop datamanipuleringskommandon, men det går sällan att göra en hel analys med allt kedjat i ett enda uttryck. Följande är till exempel dålig praxis, eftersom det gör koden i princip omöjlig att felsöka:

final_results <- starting_data %>%
  # 743 steps piped together
  # ... %>%
  collect()

Detta skapar ett dilemma. Du behöver lagra resultaten av mellanliggande beräkningar, men vill inte samla in dem med collect() eftersom det är långsamt. Lösningen är att använda compute() för att utföra beräkningen och lagra resultatet i en temporär dataram i Spark. compute() tar två argument: en tibble och ett variabelnamn för den Spark-dataram som ska lagra resultatet.

a_tibble %>%
  # some calculations %>%
  compute("intermediate_results")

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark är fördefinierad som track_metadata_tbl.

  • Filtrera raderna i track_metadata_tbl där artist_familiarity är större än 0,8.
  • Beräkna resultaten med compute().
    • Lagra resultaten i en Spark-dataram med namnet "familiar_artists".
    • Tilldela resultatet till en R-tibble med namnet computed.
  • Se tillgängliga Spark-datamängder med src_tbls().
  • Skriv ut class() för computed. Observera att till skillnad från collect() returnerar compute() en fjärrtibble. Data lagras fortfarande i Spark-klustret.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
___
Redigera och kör kod