duckdb / duckdb/duckdb-java

Partitioned Export with COPY Generates Excessively Many Small Files within Each Partition

Offen
#152 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
127
Forks
80
Ø Merge
13 Std. 49 Min.
Gemergte PRs (30 T.)
48

Beschreibung

**Duckdb Version**: 1.1.3 and 1.2.0

When using the COPY command to export data into Parquet format with a partition key (e.g., batch_id), DuckDB produces multiple very small files (approximately 50–100KB each). In our use case—exporting around 100 million line items (1 crore) into batches of 5,000 line items each—this results in roughly 20,000 separate partition directories and small file fragments within each.
**Current output**
```
\batch_id=1000\
records_0.parquet (30kb)
records_1.parquet(70kb)
```

**Expected output**
```
\batch_id=1000\
records_0.parquet (100kb)
```

**Command used to export :**
```sql
COPY my_schema.my_table
TO '/path/to/export'
(FORMAT 'parquet', PARTITION_BY (batch_id), OVERWRITE_OR_IGNORE, FILENAME_PATTERN 'records_{i}');
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, den dokumentierten COPY-Befehl mit Parquet-Partitionierung und dem im Issue gezeigten FILENAME_PATTERN zu reproduzieren. Vergleiche die innerhalb einer Partition erzeugten Dateien mit der erwarteten Ausgabe einer einzelnen Datei; abgeschlossen ist die Aufgabe, wenn der Export für den gemeldeten Workload keine unnötigen kleinen Fragmente mehr erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
sql
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.