Guardar resultados intermedios
Como viste en el Capítulo 1, copiar datos entre R y Spark es intrínsecamente lento. Esto significa que recopilar los datos, como hiciste en el ejercicio anterior, solo debería hacerse cuando realmente lo necesites.
El operador pipe es muy cómodo para encadenar comandos de manipulación de datos, pero en general no puedes hacer todo un análisis con todo encadenado. Por ejemplo, esto es una práctica pésima, porque nunca podrás depurar tu código.
final_results <- starting_data %>%
# 743 pasos encadenados
# ... %>%
collect()
Esto plantea un dilema. Necesitas guardar los resultados de cálculos intermedios, pero no quieres recopilarlos porque es lento. La solución es usar compute() para realizar el cálculo, pero guardar los resultados en un data frame temporal en Spark. compute recibe dos argumentos: un tibble y un nombre de variable para el data frame de Spark que almacenará los resultados.
a_tibble %>%
# algunos cálculos %>%
compute("intermediate_results")
Este ejercicio forma parte del curso
Introducción a Spark con sparklyr en R
Instrucciones del ejercicio
Ya tienes creada una conexión a Spark como spark_conn. También se ha predefinido un tibble asociado a los metadatos de pistas almacenados en Spark llamado track_metadata_tbl.
- Filtra las filas de
track_metadata_tbldondeartist_familiaritysea mayor que 0.8. - Calcula los resultados usando
compute().- Guarda los resultados en un data frame de Spark llamado
"familiar_artists". - Asigna el resultado a un tibble de R llamado
computed.
- Guarda los resultados en un data frame de Spark llamado
- Consulta los conjuntos de datos disponibles en Spark usando
src_tbls(). - Imprime la
class()decomputed. Observa que, a diferencia decollect(),compute()devuelve un tibble remoto. Los datos siguen almacenados en el clúster de Spark.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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
___