apache / apache/datafusion

Project Hive Partition Columns With ProjectionExec

Offen
#2,291 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
enhancement help wanted
Vorherrschende Sprache
Rust
Sterne
9.3k
Forks
2.4k
Ø Merge
3 T. 11 Std.
Gemergte PRs (30 T.)
360

Beschreibung

**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**

Part of #2079

Currently the values of Hive partitions are projected within each of the various file format specific physical operators. As described in #2079 this has a number of drawbacks

**Describe the solution you'd like**

Rather than handling partition projection within the file scan operator, I would like to propose modifying `ListingTable` to add a `ProjectionExec` within `TableProvider::scan` instead of relying on the `FileFormat` implementations to do this. This `ProjectionExec` would be created with a set of literal expressions corresponding to the partition values

Therefore instead of `TableProvider::scan` generating something like

```
AvroExec:
```

It would generate

```
UnionExec
ProjectionExec: ... // Partition 1
AvroExec: ...
ProjectionExec: ... // Partition 2
AvroExec: ...
```

Note: this will depend on #2289

**Describe alternatives you've considered**

The logic could instead be moved to `FileFormat::create_physical_plan` implementations, but I think it would be better to keep what is a catalog detail close to the catalog implementation.

FYI @matthewmturner @yjshen @rdettai

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Lies zunächst ListingTable und TableProvider::scan, und überprüfe anschließend die Implementierungen von FileFormat::create_physical_plan sowie die Abhängigkeit in #2289. Verfolge, wie Hive-Partitionswerte derzeit projiziert werden und wie ProjectionExec und UnionExec zusammengesetzt werden. Die Aufgabe ist erledigt, wenn die Partitionsprojektion von ListingTable statt von dateiformatspezifischen physischen Operatoren behandelt wird und die vorgeschlagene Planstruktur für mehrere Partitionen funktioniert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
databases
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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