ComeçarComece de graça

Ordenar vs. arranjar

Até aqui neste capítulo, você explorou algumas funções de transformação de features da MLlib do Spark. O sparklyr também oferece acesso a funções que usam a API de DataFrame do Spark.

A forma do dplyr de ordenar uma tibble é usar arrange(). Você também pode ordenar tibbles usando a API de DataFrame do Spark com sdf_sort(). Essa função recebe um vetor de caracteres com as colunas para ordenar e, no momento, apenas a ordenação crescente é suportada.

Por exemplo, para ordenar pela coluna x, depois (em caso de empates) pela coluna y, e depois pela coluna z, o código a seguir compara as abordagens do dplyr e do DataFrame do Spark.

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

Para ver qual método é mais rápido, experimente usar tanto arrange() quanto sdf_sort(). Você pode medir quanto tempo seu código leva para rodar envolvendo-o em microbenchmark(), do pacote de mesmo nome.

microbenchmark({
  # seu código
})

Você pode aprender mais sobre como analisar o desempenho do seu código no curso Writing Efficient R Code.

Este exercício faz parte do curso

Introdução ao Spark com sparklyr em R

Ver curso

Instruções do exercício

Uma conexão com o Spark já foi criada para você como spark_conn. Uma tibble vinculada aos metadados de faixas armazenados no Spark já foi pré-definida como track_metadata_tbl.

  • Use microbenchmark() para comparar quanto tempo leva para realizar as ações a seguir.
    • Use arrange() para ordenar as linhas de track_metadata_tbl por year, depois artist_name, depois release e depois title.
    • Colete o resultado.
    • Faça a mesma coisa novamente, desta vez usando sdf_sort() em vez de arrange(). Lembre-se de colocar os nomes das colunas entre aspas.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código