Skip to content
Parquet Content-Defined Chunking Potencializa Deduplicação com Xet no Hugging Face
Source: huggingface.co

Parquet Content-Defined Chunking Potencializa Deduplicação com Xet no Hugging Face

Sources: https://huggingface.co/blog/parquet-cdc, Hugging Face Blog

TL;DR

  • Parquet Content-Defined Chunking (CDC) está disponível no PyArrow e Pandas e funciona com o storage Xet do Hugging Face para deduplicação eficiente.
  • CDC deduplica dados no nível de páginas de dados antes da serialização e compressão, reduzindo uploads/downloads entre repositórios e arquivos.
  • Ative Parquet CDC passando use_content_defined_chunking=True ao gravar Parquet; URIs do PyArrow podem ser usados com o esquema hf:// para leituras/escritas no Hub.
  • A combinação CDC + Xet reduz significativamente a transferência de dados e os custos de armazenamento para grandes conjuntos de dados no Hugging Face.

Contexto e antecedentes

Parquet é um formato de armazenamento em colunas amplamente utilizado na engenharia de dados, e o Hugging Face hospeda uma grande quantidade de dados Parquet no Hub. O novo storage Xet usa chunking definido pelo conteúdo para deduplicar blocos de dados, reduzindo custos de armazenamento e acelerando uploads e downloads. Como o layout do Parquet—especialmente os blocos de coluna e as páginas de dados—pode produzir representações em bytes diferentes para pequenas alterações, a deduplicação pode ser subótima sem um chunking alinhado ao conteúdo. É aí que o CDC entra: ele alinha os limites dos blocos com os valores lógicos, permitindo deduplicação mais eficaz antes da serialização ou compressão. O texto utiliza o conjunto de demonstração OpenOrca para ilustrar o fluxo. A partir do PyArrow 21.0.0, URIs do Hugging Face podem ser usados diretamente em funções PyArrow para ler e gravar Parquet (e outros formatos) no Hub via o esquema hf://. Essa integração viabiliza operações de fim a fim de Parquet no Hub sem sair do ambiente, demonstrando como o CDC interage com o Xet para deduplicação entre repositórios e arquivos. O objetivo maior é reduzir a transferência de dados mantendo a acessibilidade e a compatibilidade com readers/ Writers existentes. Hugging Face Blog. Arquivos tradicionais não deduplicam entre repositórios, levando a reenvios e redownloads completos. Em contraste, um sistema que utiliza chunking definido pelo conteúdo pode reconhecer conteúdo idêntico e evitar transferir dados não alterados. O post explica que tabelas idênticas enviadas ao Hub podem ser transferidas instantaneamente com CDC, e a deduplicação funciona entre repositórios. Esse recurso cross-repositório é uma capacidade chave do Xet para facilitar compartilhamento de dados. Hugging Face Blog. As demonstrações incluem observações sobre como a deduplicação muda quando novas colunas são adicionadas, removidas ou com mudanças de tipos, com heatmaps e estimativas de deduplicação para entender onde os dados são transferidos. Hugging Face Blog. Para ilustrar o mecanismo, o post mostra que ativar o Parquet CDC resulta em transferências significativamente menores ao enviar o conjunto original e o alterado, em comparação com o caso sem CDC. Os mesmos benefícios também aparecem para downloads via huggingface_hub.hf_hub_download() e datasets.load_dataset(). Hugging Face Blog.

O que há de novo

As atualizações centrais são: um recurso Parquet CDC disponível nos escritores Parquet e um sistema que aproveita o storage Xet para deduplicar no nível de páginas de dados. Pontos-chave:

  • CDC Parquet está disponível no PyArrow e no Pandas, com deduplicação aprimorada pelo Xet.
  • Ativar CDC é simples: use write_parquet com use_content_defined_chunking=True. Também é possível trabalhar com URIs hf:// para operações no Hub. Hugging Face Blog.
  • Os benefícios de deduplicação dependem de como as mudanças se distribuem pelas páginas; mudanças que afetam muitas páginas podem reduzir o ganho, enquanto alterações localizadas tendem a melhorar. CDC atua no nível de páginas de dados da Parquet, antes da serialização/compressão. Hugging Face Blog.
  • Os escritores de Parquet utilizam grupos de linhas de tamanho fixo por padrão (PyArrow padrão é 1 Mi de linhas). Os escritores de datasets podem ajustar esse tamanho para equilibrar desempenho de acesso aleatório e uso de memória. Mudanças que deslocam linhas entre os grupos de linhas afetam páginas de dados, e CDC ajuda a mitigar esse impacto. Hugging Face Blog.
  • Em datasets com vários arquivos, CDC + Xet pode deduplicar dados mesmo quando os arquivos são divididos em fronteiras diferentes, apoiando paralelismo eficiente. Hugging Face Blog.
  • Leitores e ferramentas de download também se beneficiam do CDC, mantendo compatibilidade com caminhos de leitura etc. Hugging Face Blog.

Por que isso importa (impacto para desenvolvedores/empresas)

Para equipes que lidam com grandes volumes de dados, CDC Parquet com Xet se traduz em reduções de custo e tempo. Benefícios práticos:

  • Transferência de dados significativamente menor durante uploads e downloads devido à deduplicação entre arquivos e repositórios.
  • Custos de armazenamento reduzidos por não regravar dados já conhecidos pelo storage.
  • Melhor colaboração entre equipes, com atualizações de dados sem reenvio completo.
  • Compatibilidade com fluxos de trabalho Parquet existentes, ganhando eficiência de CDC e Xet. Na prática, organizações com grandes datasets Parquet no Hub podem esperar ciclos de iteração mais rápidos para atualizações e menor largura de banda necessária para distribuição. A abordagem está alinhada a metas maiores de gestão de armazenamento, reduzindo o desperdício de movimento de dados sem sacrificar acessibilidade. Hugging Face Blog.

Detalhes técnicos ou Implementação

Resumo prático para incorporar CDC Parquet em fluxos de trabalho:

  • CDC Parquet é suportado no PyArrow 21.0.0+ e no Pandas, permitindo chunking baseado no conteúdo antes da serialização e compressão. A integração com Xet facilita a deduplicação entre arquivos e repositórios.
  • Para habilitar CDC, use write_parquet com use_content_defined_chunking=True. Em PyArrow, URIs hf:// podem ser usados para leituras/escritas no Hub. Hugging Face Blog.
  • Os benefícios de deduplicação dependem da distribuição de mudanças. Se a maioria das páginas for afetada, o ganho tende a diminuir. CDC funciona no nível de páginas de dados da Parquet, antes da serialização/compressão. Hugging Face Blog.
  • Os ajustes de tamanho de row-group (por exemplo, 1 Mi linhas por padrão) influenciam como mudanças se distribuem entre grupos e páginas; ajustar isso pode melhorar desempenho ou uso de memória. Hugging Face Blog.
  • Em datasets com vários arquivos, CDC + Xet deduplicam dados mesmo que os arquivos estejam particionados em fronteiras diferentes, mantendo paralelismo eficiente. Hugging Face Blog.
  • Leitores e ferramentas de download também tiram proveito do CDC, com suporte a hf_hub_download() e datasets.load_dataset(). Hugging Face Blog. Considerações incluem escolher o tamanho adequado de row-group para o workload específico e reconhecer que a distribuição de mudanças limita o ganho de deduplicação. O CDC opera no nível de páginas de dados da Parquet, o que facilita chunking consistente e deduplicação entre atualizações. Hugging Face Blog.

Principais pontos (Key takeaways)

  • CDC Parquet traz chunking definido pelo conteúdo para melhorar a deduplicação no storage Xet.
  • Ativação de CDC é simples com use_content_defined_chunking=True e funciona com URIs hf:// para operações no Hub.
  • A combinação reduz transferência de dados e custos de armazenamento, além de facilitar deduplicação entre arquivos e repositórios.
  • O tamanho de row-group e a distribuição de mudanças influenciam o desempenho da deduplicação; CDC mitiga muitos desafios, chunking por conteúdo.
  • Leitores, escritores e ferramentas de download se beneficiam de fluxos CDC-enabled, mantendo compatibilidade com pipelines Parquet existentes. Hugging Face Blog.

FAQ

  • O que é Parquet Content-Defined Chunking (CDC)?

    CDC é um recurso do Parquet que chunking páginas de dados com base no conteúdo para melhorar a deduplicação ao gravar dados, especialmente em storage de endereço de conteúdo como Xet. [Hugging Face Blog](https://huggingface.co/blog/parquet-cdc).

  • Como o CDC interage com o storage Xet do Hugging Face?

    O CDC alinha os limites dos blocos com os valores de dados, permitindo deduplicação mais eficiente entre arquivos e repositórios no Xet. [Hugging Face Blog](https://huggingface.co/blog/parquet-cdc).

  • Como habilito o Parquet CDC no meu fluxo de trabalho?

    Utilize `write_parquet` com `use_content_defined_chunking=True` no PyArrow (o Pandas também suporta). A leitura/escrita no Hub pode usar `hf://` URIs. [Hugging Face Blog](https://huggingface.co/blog/parquet-cdc).

  • Existem trade-offs ou limitações?

    O ganho de deduplicação depende de como as mudanças se distribuem pelas páginas; mudanças que afetam muitas páginas podem reduzir o benefício. O tamanho do row-group e a divisão em múltiplos arquivos também influenciam. [Hugging Face Blog](https://huggingface.co/blog/parquet-cdc).

Referências

More news