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
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_tblwaarbijartist_familiaritygroter 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.
- Sla de resultaten op in een Spark-dataframe met de naam
- Bekijk de beschikbare Spark-gegevenssets met
src_tbls(). - Print de
class()vancomputed. Merk op datcompute()in tegenstelling totcollect()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
___