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!