Production-scale import for multi-GB CSV, JSON, and Parquet files
Mantenedores costumam responder em até 2 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
Direção de pesquisa
Start by reading the existing import command and its parsing and write paths; the issue does not name specific files or tests. Compare the current streaming and serial-write behavior with the acceptance criteria, then identify the existing test entry points for import formats and error handling. Done means the documented formats, bounded concurrency, checkpoint/resume, progress, and failure output meet the criteria while existing JSON and CSV behavior remains compatible.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Customer scenario
Importing a large local dataset (for example, a 10 GB CSV, JSON/JSONL, or Parquet file) into Azure Cosmos DB currently often pushes customers toward Spark or Databricks. That adds significant setup, learning, governance, and pricing overhead for what should be a straightforward data-loading workflow.
The shell should provide a production-ready experience comparable in simplicity to mongoimport: point the command at a file, connection/container, and relevant options, then let it safely and efficiently load the data.
Current behavior
The existing import command provides a useful foundation:
- JSON Lines, JSON array, and CSV input
- Streaming parsing rather than loading the entire file into memory
- Insert and upsert modes
--dry-runvalidation--continue-on-error- Partition-key mapping for CSV
- Imported/failed counts and total RU charge
However, imports currently issue item writes serially. The command does not support Parquet, checkpoint/resume, configurable concurrency, durable failure output, or detailed progress reporting. As a result, it should not yet be positioned as an optimized or resilient multi-GB migration tool.
Proposed behavior
Extend import into a production-scale data loader while preserving its simple defaults.
Suggested capabilities:
- Add Parquet input support.
- Use bounded, configurable parallelism and Cosmos DB bulk execution where appropriate.
- Respect throttling and retry guidance while allowing an optional RU or throughput budget.
- Show periodic progress: records processed, succeeded, failed, elapsed time, throughput, RU consumed, and estimated completion when available.
- Support checkpoints and resuming an interrupted import without starting from the beginning.
- Write rejected records and structured error details to a user-selected file.
- Support common field mapping and type-conversion needs, especially for CSV and Parquet.
- Preserve streaming behavior and bounded memory usage for all formats.
- Retain insert/upsert, dry-run, and continue-on-error behavior.
- Produce both human-readable and structured summaries suitable for automation.
Possible usage:
import ./items.jsonl --mode=upsert --max-concurrency=16 --checkpoint=./items.checkpoint
import ./items.csv --partition-key=/tenantId --errors=./rejected.jsonl
import ./items.parquet --format=parquet --max-ru=50000
The exact option names are illustrative and should follow existing shell conventions.
Acceptance criteria
- A multi-GB input file is processed with bounded memory usage.
- JSONL, JSON array, and CSV behavior remains backward compatible.
- Parquet files can be imported with documented type-mapping behavior.
- Users can configure bounded write concurrency.
- The importer handles service throttling without losing or silently skipping records.
- An interrupted import can resume from a durable checkpoint.
- Progress and final summaries include processed/succeeded/failed counts and observed RU charge.
- Failed records can be written to a machine-readable file with actionable error details.
- Cancellation leaves a valid checkpoint and does not report success.
- Documentation clearly explains performance, consistency, idempotency, partition-key, and resume semantics.
Notes
This is intended for scalable client-side ingestion, not a transactional import. Writes across logical partitions cannot be made atomic as a single operation.
- Linguagem predominante
- C#
- Estrelas
- 4
- Forks
- 7
- Merge médio
- 2d 11min
- PRs com merge (30d)
- 28
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Azure/CosmosDBShell
-
bug P0
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
Azure/CosmosDBShell#244 ·
Mantenedores costumam responder em até 2 dias
-
automation P1
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
Azure/CosmosDBShell#178 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Lightweight headless CI distribution (no MCP, LSP, interactive UI)Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertaautomation P1
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Azure/CosmosDBShell#175 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
agentic enhancement P0
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
Azure/CosmosDBShell#153 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
Azure/CosmosDBShell#107 · 4 comentários ·
Mantenedores costumam responder em até 2 dias
Todas as issues de Azure/CosmosDBShell
Issues semelhantes
-
[Tool] DirectBenchAbertahas-image has-readme needs-attention new-tool repo-verified
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 62/100
shanselman/TinyToolTown#844 · 2 comentários ·
Mantenedores costumam responder em até 3 dias
-
[i18n] 安装实例完成后的成功提示未正确本地化Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
PCL-Community/PCL-CE#3658 ·
Mantenedores costumam responder em até 1 dia
-
Deploy & Patch-issues opprettes ikke: create-pnd-issues.yml har feilet hver uke siden 2025-09-08Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Altinn/altinn-auth#4359 ·
Mantenedores costumam responder em até 1 dia
-
アプリ: チャット 優先: 中 提案
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
yksr-melt/Meltype#243 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Workflows: a workflow stored with null conditions is skipped with an exception instead of runAbertabug core
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia