Stocarea rezultatelor intermediare
Așa cum ai văzut în Capitolul 1, copierea datelor între R și Spark este o operațiune intrinsec lentă. Prin urmare, colectarea datelor – așa cum ai făcut în exercițiul anterior – ar trebui folosită doar atunci când este cu adevărat necesară.
Operatorul pipe este foarte util pentru a înlănțui comenzi de manipulare a datelor, însă, în general, nu poți realiza o analiză completă cu totul înlănțuit. De exemplu, practica de mai jos este de evitat, deoarece nu vei putea depana codul.
final_results <- starting_data %>%
# 743 steps piped together
# ... %>%
collect()
Aceasta creează o dilemă. Trebuie să stochezi rezultatele calculelor intermediare, dar nu vrei să le colectezi din cauza vitezei reduse. Soluția este să folosești compute() pentru a efectua calculul, stocând rezultatele într-un DataFrame temporar pe Spark. compute() primește două argumente: un tibble și un nume de variabilă pentru DataFrame-ul Spark în care vor fi stocate rezultatele.
a_tibble %>%
# some calculations %>%
compute("intermediate_results")
Acest exercițiu face parte din cursul
Introducere în Spark cu sparklyr în R
Instrucțiuni pentru exercițiu
O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble atașat la metadatele pistelor stocate în Spark a fost predefinit ca track_metadata_tbl.
- Filtrează rândurile din
track_metadata_tblundeartist_familiarityeste mai mare decât 0.8. - Calculează rezultatele folosind
compute().- Stochează rezultatele într-un DataFrame Spark numit
"familiar_artists". - Asignează rezultatul unui tibble R numit
computed.
- Stochează rezultatele într-un DataFrame Spark numit
- Vezi seturile de date Spark disponibile folosind
src_tbls(). - Afișează
class()a obiectuluicomputed. Observă că, spre deosebire decollect(),compute()returnează un tibble remote. Datele sunt în continuare stocate în clusterul Spark.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___