ComeçarComece de graça

Trabalhando com arquivos parquet

Arquivos CSV são ótimos para salvar em disco o conteúdo de objetos de dados retangulares (como data.frames do R e DataFrames do Spark). O problema é que eles são bem lentos para ler e escrever, o que os torna inviáveis para conjuntos de dados grandes. Arquivos Parquet oferecem uma alternativa com desempenho superior. Além de serem usados com dados do Spark, arquivos parquet também podem ser utilizados com outras ferramentas do ecossistema Hadoop, como Shark, Impala, Hive e Pig.

Tecnicamente falando, “arquivo parquet” é um termo impreciso. Quando você armazena dados no formato parquet, na verdade obtém um diretório inteiro de arquivos. Os dados são divididos em vários arquivos .parquet, o que facilita o armazenamento em várias máquinas, e há também alguns arquivos de metadados descrevendo o conteúdo de cada coluna.

O sparklyr pode importar arquivos parquet usando spark_read_parquet(). Essa função recebe uma conexão Spark, uma string com o nome do Spark DataFrame que deve ser criado e um caminho para o diretório parquet. Observe que essa função importará os dados diretamente no Spark, o que geralmente é mais rápido do que importar os dados para o R e depois usar copy_to() para copiá-los do R para o Spark.

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

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 Spark foi criada para você como spark_conn. Uma string apontando para o diretório parquet (no sistema de arquivos onde o R está sendo executado) foi criada para você como parquet_dir.

  • Use dir() para listar os caminhos de arquivos absolutos dos arquivos no diretório parquet, atribuindo o resultado a filenames.
    • O primeiro argumento deve ser o diretório cujos arquivos você está listando, parquet_dir.
    • Para recuperar caminhos absolutos (em vez de relativos), você também deve passar full.names = TRUE.
  • Crie um data_frame com duas colunas.
    • filename deve conter os nomes de arquivo que você acabou de obter, sem a parte do diretório. Crie isso passando os nomes de arquivo para basename().
    • size_bytes deve conter os tamanhos desses arquivos. Crie isso passando os nomes de arquivo para file.size().
  • Use spark_read_parquet() para importar os dados de timbre no Spark, atribuindo o resultado a timbre_tbl.
    • O primeiro argumento deve ser a conexão Spark.
    • O segundo argumento deve ser "timbre".
    • O terceiro argumento deve ser parquet_dir.

Exercício interativo prático

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

# parquet_dir has been pre-defined
parquet_dir

# List the files in the parquet dir
filenames <- ___

# Show the filenames and their sizes
data_frame(
  filename = ___,
  size_bytes = ___
)

# Import the data into Spark
timbre_tbl <- ___
Editar e executar o código