Production-scale import for multi-GB CSV, JSON, and Parquet files
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- C#
- Étoiles
- 4
- Forks
- 7
- Merge moyen
- 2 j 9 min
- PR mergées (30 j)
- 29
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Azure/CosmosDBShell
-
automation P1
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
Azure/CosmosDBShell#178 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Lightweight headless CI distribution (no MCP, LSP, interactive UI)Peut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverteautomation P1
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
Azure/CosmosDBShell#175 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
agentic enhancement P0
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
Azure/CosmosDBShell#153 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
Azure/CosmosDBShell#104 · 8 commentaires ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de Azure/CosmosDBShell
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
gavin-wolfe/wolfden#104 ·
Les mainteneurs répondent en général sous 1 jour
-
[BUG] Still libmicrohttpd dependency is not removed properly from External-Dependency-Info.txt fileOuvertetype/bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
area:framework
Difficulté 1/5 1-3 heures Accessibilité débutants 72/100
nunit/docs#1262 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
[辞書] かんそうりつ->乾燥率Ouverte辞書
Difficulté 1/5 Moins d'une heure Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
bug good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
thomhurst/TUnit#7201 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour