ComenzarEmpieza gratis

Ordenar vs. organizar

Hasta ahora, en este capítulo has explorado algunas funciones de transformación de características de MLlib de Spark. sparklyr también da acceso a funciones que usan la API de DataFrame de Spark.

La forma de dplyr para ordenar un tibble es usar arrange(). También puedes ordenar tibbles con la API de DataFrame de Spark mediante sdf_sort(). Esta función recibe un vector de caracteres con las columnas por las que ordenar y, por ahora, solo admite orden ascendente.

Por ejemplo, para ordenar por la columna x, y en caso de empates por la columna y, y luego por la columna z, el siguiente código compara los enfoques de dplyr y de DataFrame de Spark.

a_tibble %>%
  arrange(x, y, z)
a_tibble %>%
  sdf_sort(c("x", "y", "z"))

Para ver qué método es más rápido, prueba tanto arrange() como sdf_sort(). Puedes medir cuánto tarda tu código en ejecutarse envolviéndolo en microbenchmark(), del paquete con el mismo nombre.

microbenchmark({
  # your code
})

Puedes aprender más sobre cómo perfilar la velocidad de tu código en el curso Writing Efficient R Code.

Este ejercicio forma parte del curso

Introducción a Spark con sparklyr en R

Ver curso

Instrucciones del ejercicio

Ya tienes una conexión a Spark creada como spark_conn. Se ha predefinido un tibble asociado a los metadatos de pistas almacenados en Spark como track_metadata_tbl.

  • Usa microbenchmark() para comparar cuánto tarda en realizarse lo siguiente.
    • Usa arrange() para ordenar las filas de track_metadata_tbl por year, luego artist_name, después release y por último title.
    • Recopila el resultado.
    • Repite lo mismo, esta vez usando sdf_sort() en lugar de arrange(). Recuerda entrecomillar los nombres de las columnas.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

# Compare timings of arrange() and sdf_sort()
microbenchmark(
  arranged = track_metadata_tbl %>%
    # Arrange by year, then artist_name, then release, then title
    ___ %>%
    # Collect the result
    ___,
  sorted = track_metadata_tbl %>%
    # Sort by year, then artist_name, then release, then title
    ___ %>%
    # Collect the result
    ___,
  times = 5
)
Editar y ejecutar código