ComeçarComece de graça

Armazenando resultados intermediários

Como você viu no Capítulo 1, copiar dados entre R e Spark é uma tarefa fundamentalmente lenta. Isso significa que coletar os dados, como você viu no exercício anterior, só deve ser feito quando realmente precisar.

O operador pipe é ótimo para encadear comandos de manipulação de dados, mas, em geral, você não consegue fazer uma análise inteira com tudo encadeado. Por exemplo, isso é uma prática péssima, porque você nunca conseguirá depurar seu código.

final_results <- starting_data %>%
  # 743 etapas encadeadas
  # ... %>%
  collect()

Isso gera um dilema. Você precisa armazenar os resultados de cálculos intermediários, mas não quer coletá-los porque é lento. A solução é usar compute() para realizar o cálculo, mas armazenar os resultados em um data frame temporário no Spark. A função compute recebe dois argumentos: um tibble e um nome de variável para o data frame do Spark que armazenará os resultados.

a_tibble %>%
  # alguns cálculos %>%
  compute("intermediate_results")

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. Um tibble vinculado aos metadados de faixas armazenados no Spark foi predefinido como track_metadata_tbl.

  • Filtre as linhas de track_metadata_tbl em que artist_familiarity é maior que 0.8.
  • Calcule os resultados usando compute().
    • Armazene os resultados em um data frame do Spark chamado "familiar_artists".
    • Atribua o resultado a um tibble R chamado computed.
  • Veja os conjuntos de dados do Spark disponíveis usando src_tbls().
  • Imprima a class() de computed. Perceba que, diferente de collect(), compute() retorna um tibble remoto. Os dados ainda estão armazenados no cluster Spark.

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

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