ComenzarEmpieza gratis

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

Ver curso

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_tbl donde artist_familiarity sea 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.
  • Consulta los conjuntos de datos disponibles en Spark usando src_tbls().
  • Imprime la class() de computed. Observa que, a diferencia de collect(), 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
___
Editar y ejecutar código