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
Ö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_tbldärartist_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.
- Lagra resultaten i en Spark-dataram med namnet
- Se tillgängliga Spark-datamängder med
src_tbls(). - Skriv ut
class()förcomputed. Observera att till skillnad fråncollect()returnerarcompute()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
___