Production-scale import for multi-GB CSV, JSON, and Parquet files
維護者通常 2 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
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.
由索引模型根據 Issue 內容生成。
描述
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.
- 主要語言
- C#
- 星號
- 4
- 分支
- 7
- 平均合併
- 2 天 11 分鐘
- 30 天內合併 PR
- 28
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
Azure/CosmosDBShell 的其他 Issue
-
bug P0
難度 4/5 3-5 天 新手友好度 30/100
Azure/CosmosDBShell#244 ·
維護者通常 2 天內回覆
-
automation P1
難度 5/5 一週以上 新手友好度 45/100
Azure/CosmosDBShell#178 · 1 則留言 ·
維護者通常 2 天內回覆
-
Lightweight headless CI distribution (no MCP, LSP, interactive UI)可能重新可做 關聯的 PR 已關閉且未合併。 未關閉automation P1
難度 5/5 一週以上 新手友好度 35/100
Azure/CosmosDBShell#175 · 1 則留言 ·
維護者通常 2 天內回覆
-
agentic enhancement P0
難度 4/5 3-5 天 新手友好度 55/100
Azure/CosmosDBShell#153 · 1 則留言 ·
維護者通常 2 天內回覆
-
enhancement
難度 5/5 一週以上 新手友好度 45/100
Azure/CosmosDBShell#107 · 4 則留言 ·
維護者通常 2 天內回覆
查看 Azure/CosmosDBShell 的全部 Issue
相似的 Issue
-
has-image has-readme needs-attention new-tool repo-verified
難度 1/5 1-3 小時 新手友好度 62/100
shanselman/TinyToolTown#844 · 2 則留言 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 62/100
PCL-Community/PCL-CE#3658 ·
維護者通常 1 天內回覆
-
Deploy & Patch-issues opprettes ikke: create-pnd-issues.yml har feilet hver uke siden 2025-09-08未關閉
難度 2/5 1-3 小時 新手友好度 62/100
Altinn/altinn-auth#4359 ·
維護者通常 1 天內回覆
-
アプリ: チャット 優先: 中 提案
難度 2/5 1-3 小時 新手友好度 70/100
yksr-melt/Meltype#243 · 1 則留言 ·
維護者通常 1 天內回覆
-
bug core
難度 2/5 1-3 小時 新手友好度 72/100
維護者通常 1 天內回覆