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
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_tblin cuiartist_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.
- Salva i risultati in un data frame Spark chiamato
- Visualizza gli insiemi di dati disponibili in Spark usando
src_tbls(). - Stampa la
class()dicomputed. Nota che, a differenza dicollect(),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
___