Inizia subitoInizia gratis

Memorizzare risultati intermedi

Come hai visto nel Capitolo 1, copiare dati tra R e Spark è un’operazione intrinsecamente lenta. Questo significa che raccogliere i dati, come nel precedente esercizio, andrebbe fatto solo quando è davvero necessario.

L’operatore pipe è ottimo per concatenare comandi di manipolazione dei dati, ma in generale non puoi svolgere un’intera analisi con tutto incatenato. Per esempio, questo è un pessimo approccio, perché non riuscirai mai a fare debug del tuo codice.

final_results <- starting_data %>%
  # 743 passaggi concatenati
  # ... %>%
  collect()

Questo crea un dilemma. Devi memorizzare i risultati dei calcoli intermedi, ma non vuoi usare collect perché è lento. La soluzione è usare compute() per eseguire il calcolo, ma salvare i risultati in un data frame temporaneo su Spark. compute accetta due argomenti: una tibble e un nome di variabile per il data frame Spark che conterrà i risultati.

a_tibble %>%
  # alcune elaborazioni %>%
  compute("intermediate_results")

Questo esercizio fa parte del corso

Introduzione a Spark con sparklyr in R

Visualizza corso

Istruzioni dell'esercizio

È stata creata per te una connessione a Spark come spark_conn. Una tibble collegata ai metadati delle tracce memorizzati in Spark è stata predefinita come track_metadata_tbl.

  • Filtra le righe di track_metadata_tbl in cui artist_familiarity è maggiore di 0.8.
  • Calcola i risultati usando compute().
    • Salva i risultati in un data frame Spark chiamato "familiar_artists".
    • Assegna il risultato a una tibble R chiamata computed.
  • Visualizza gli insiemi di dati disponibili in Spark usando src_tbls().
  • Stampa la class() di computed. Nota che, a differenza di collect(), compute() restituisce una tibble remota. I dati sono ancora memorizzati nel cluster Spark.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
___
Modifica ed esegui il codice