[Feature Request]: Bound PGBKCVOperation precombine table by in-memory size, not key count

Aberta
#39,754 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

  • #39767 de @Dharshika-11 — fechado sem integrar

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
python
Domínio
data-engineering

Direção de pesquisa

Comece em sdks/python/apache_beam/runners/worker/operations.py, em PGBKCVOperation e no TODO relacionado a limitar pelo tamanho em memória. Compare a PGBKOperation correspondente e inspecione como os acumuladores Count, Mean, min, max e sum são representados. Considera-se concluído quando a tabela de precombine é limitada usando uma estimativa do tamanho em memória, em vez de depender apenas da quantidade de chaves, levando em conta acumuladores encapsulados ou nativos.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

P3
What would you like to happen?

PGBKCVOperation (sdks/python/apache_beam/runners/worker/operations.py) caps its precombine table by key count (max_keys, default 100k / 1M for Count/Mean/min/max/sum), flushing ~10% of keys once the count is hit. The code already flags this as a stopgap:

# TODO(b/36567833): Bound by in-memory size rather than key count.

A fixed key-count cap is a poor memory proxy when accumulators vary in size, so workers can OOM well below max_keys (or flush needlessly when accumulators are tiny). Request: bound the table by estimated in-memory size instead of (or in addition to) key count.

Notes:

  • b/36567833 is a Google-internal Buganizer ref with no public page; this issue tracks it publicly.
  • Sibling PGBKOperation has the same shape (max_size = 10 * 1000 elements).
  • Sizing accurately is the hard part — sys.getsizeof undercounts wrapped/native (e.g. C-extension) accumulators; a coder-based or sampled-RSS estimate is likely needed.
Issue Priority

Priority: 3 (nice-to-have improvement)

Issue Components
  • Component: Python SDK
Linguagem predominante
Java
Estrelas
8.7k
Forks
4.8k
Merge médio
2d 12h
PRs com merge (30d)
371

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/beam

Todas as issues de apache/beam

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.