Coding / Programming Videos

Post your favorite coding videos and share them with others!

Parquets no Google Cloud Storage com Dask – Gustavo Decarlo – Medium

Source link

Aqui será demonstrado um breve tutorial de como salvar arquivos parquets no Google Cloud Storage, cujo a origem dados são dataframes pandas ou dask. Este recurso irá ajudar em pipelines de processamentos de dataframes que precisam ser persistidos em arquivos principalmente no mundo de BigData onde o formato parquet é muito utilizado, dado sua boa taxa de compressão e consegue manter a maioria dos formatos de dados do dataframes, como exemplo suportar o datetime e outras estrutura de dados.

Vamos aos requisitos:

  • Pandas
  • Dask
  • PyArrow
  • FastParquet

Nossa agora porque essas dependências? Pandas e Dask são interfaces que se conversam muito bem, o pandas por sua abstração dos Dataframes e o Dask por ser uma interface de processamento paralelo e pode ser escalado em um cluster com mais recursos, e mesmo em uma máquina já gerencia os recursos para processar suas tasks em paralelo, mas sua principal função além dessas é a interface com os serviços de Cloud como: Google Cloud Storage, Amazon S3, Azure Datalake. O PyArrow e o FastParquet são interfaces que o Pandas já usa para salvar e ler arquivos em Parquet e o Dask usa esse apoio em sua API.

Ref da documentação do Dask dos serviços da Cloud: http://docs.dask.org/en/latest/remote-data-services.html#google-cloud-storage

Vamos ao primeiro passo que é instalar as libs acima:

!pip install gcsfs
!pip install "dask[complete]"
!pip install pyarrow # Need this interface to save a parquet in dask
!pip install fastparquet # Need this interface to save a parquet in dask that's the default interface of dask

Seguem os imports para começarmos essa tarefa:

import pandas as pd
import dask.dataframe as dd
from pprint import pprint
import gcsfs # in dask documentation need this lib to connect google cloud storage service

Ponto importante para ser mais fácil a interface com o serviço Google Cloud Storage, o caminho é criar uma service account e fazer o download da chave para o ambiente que for executar, feito isso basta colocar o path da chave nas configurações do Dask para salvar o parquet. No exemplo abaixo veremos a criação de um dataframe em pandas, convertido em Dask e salvando e lendo do serviço Google Cloud Storage.

# Save the parquet files
pandas_df = pd.DataFrame({'x' : [2,3, 2,3,4,10,11,12,13], 'y': [1, 0, 0, 0, 1,1,0,1,1]})
# Bonus convert a Pandas DF to Dask DF
dask_df = dd.from_pandas(pandas_df, npartitions=2)
dask_df = dask_df.reset_index(drop=True)
dask_df.to_parquet('gs://gdecarlo-cloud-tests.appspot.com/test_parquet',storage_options={'token': './key.json'}) #use a service account key with correct permissions
# Read the parquet File
df = dd.read_parquet('gs://gdecarlo-cloud-tests.appspot.com/test_parquet', storage_options={'token': './key.json'})
df.head()
Resultado do df.head()

Pontos importantes:

  • Coloque o endereço do seu projeto do Google Cloud Storage seguindo o protocolo ‘gs://[seu_bucket]/[sua_pasta]
  • Deve ser passado para o Dask somente até a pasta ele faz a organização partição dos arquivos parquet. O mesmo para leitura.
  • Porque tem um reset_index? Pois o Dask cria dataframes com indices por default.
  • Explicação sobre a configuração no parâmetro npartitions: https://stackoverflow.com/questions/46645477/what-is-the-role-of-npartitions-in-a-dask-dataframe

Para finalizar segue também o link para um notebook no Google Colaboratory com todos os passos descritos acima. Como ideia, fica que o seu parquet salvo pode ser facilmente importado para o Google BigQuery sem a necessidade de explicitar o schema, será usado o schema do arquivo parquet.

Ref do notebook: https://colab.research.google.com/drive/1ooyiWlz3jSxTf7EDUYOXPunFjXjEBohg

Source link

Bookmark(0)
 

Leave a Reply

Please Login to comment
  Subscribe  
Notify of
Translate »