Ooi, Hugo! Tudo bem?
A função parquet_buffer.getvalue() é a chave para entendermos como o arquivo Parquet é enviado para o S3. Vou deixar mais detalhes sobre esse processo para que você possa entender passo a passo:
→ parquet_buffer = BytesIO(): Aqui, é criado um objeto BytesIO que funciona como um buffer em memória. Ele é como um espaço temporário para armazenar dados binários.
→ df.to_parquet(parquet_buffer): O df.to_parquet() converte o DataFrame para o formato Parquet e, em vez de salvar em um arquivo físico, ele escreve os dados diretamente no parquet_buffer.
→ parquet_buffer.getvalue(): Essa função pega o conteúdo do parquet_buffer e o retorna como uma string de bytes. É como se estivéssemos "lendo" o arquivo Parquet que foi gravado no buffer.
→ s3.put_object(..., Body=parquet_buffer.getvalue()): O Body é o conteúdo que será enviado para o S3. Ao usar parquet_buffer.getvalue(), estamos enviando o arquivo Parquet que está armazenado no buffer.
De maneira geral, podemos entender que:
- O
parquet_buffer é um espaço temporário para armazenar o arquivo Parquet. - O
df.to_parquet() escreve o arquivo Parquet no parquet_buffer. - O
parquet_buffer.getvalue() pega o conteúdo do parquet_buffer como uma string de bytes. - O
s3.put_object() envia o conteúdo do parquet_buffer para o S3.
Em cada ciclo do for:
- Um novo
parquet_buffer é criado, garantindo que cada DataFrame seja convertido para Parquet e enviado para o S3 separadamente. - O conteúdo do
parquet_buffer é "resetado" a cada iteração, pois ele é um buffer em memória.
Desejo sucesso! Continue firme nos estudos! ✨✨
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!