Acelerando I/O: Parquet e Feather

Nov 27 2022
Alguns de nossos problemas consistem em dados que lemos do armazenamento local. As operações de leitura-processo-gravação podem ser confortáveis ​​em conjuntos de dados relativamente pequenos, mas essas ações para arquivos .

Alguns de nossos problemas consistem em dados que lemos do armazenamento local. As operações de leitura-processo-gravação podem ser confortáveis ​​em conjuntos de dados relativamente pequenos, mas essas ações para grandes arquivos .csv são bastante incômodas para nós. Eles podem ser muito exigentes em termos de tempo e recursos.

Apresentarei dois tipos de arquivo que aumentarão a velocidade de leitura e gravação de seus dados e comprimirão o tamanho dos dados armazenados no disco:

  • Parquet
  • Pena
  • Acessível por padrão com o Python-Pandas. Mas você pode ter que instalar adicionalmente o pyarrow e algumas extensões de seu tipo, dependendo do seu tipo de dados.
  • Oferece suporte ao gerenciamento de E/S baseado em coluna. Dessa forma, você pode evitar o uso temporário de RAM extra durante a leitura de todos os dados e, em seguida, descartar as colunas desnecessárias.
  • Armazenando os dados em formato binário em seu próprio tipo em vez de forma bruta, você pode economizar até 50% no armazenamento e pode ganhar até x100 de aceleração em operações de leitura e gravação.

Parquet

Pena

Conclusão

É tão fácil! Definitivamente, recomendo usar esses métodos quando você não precisa armazenar seus dados em formato bruto e todos os usuários não precisam abri-los com o Excel a qualquer momento! Para esse caso excepcional, é mais lógico paralelizar a leitura e a gravação dos dados em vez de alterar o formato dos dados. Também estou pensando em abordar esse cenário no futuro. Espero que este conteúdo tenha sido útil para você, acho que é algo simples, mas bastante eficaz.

Estou usando esses métodos em competições de Kaggle e obtendo bons aumentos de velocidade. Você pode revisar um código de exemplo meu aqui !