ÎncepețiÎncepe gratuit

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

Vezi cursul

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_tbl unde artist_familiarity este 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.
  • Vezi seturile de date Spark disponibile folosind src_tbls().
  • Afișează class() a obiectului computed. Observă că, spre deosebire de collect(), 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
___
Editează și rulează codul