GeoParquet

implproposalmainnone

Die Features sind in einem oder mehreren (Geo)Parquet-Dateien gespeichert.

Limitierungen

Die folgenden Einschränkungen sind bekannt:

  • Es werden nur 2D-Geometrien unterstützt.
  • Die Option linearizeCurves wird nicht unterstützt. Wie in der GeoParquet Spezifikationopen in new window beschrieben müssen alle Geometrien mit WKB oder gemäß den Geometrietypen "point", "linestring", "polygon", "multipoint", "multilinestring", "multipolygon" aus der GeoArrow-Spezifikation kodiert werden.
  • Die CQL2-Funktionen DIAMETER2D() und DIAMETER3D() werden nicht unterstützt.
  • CRUD-Operationen werden nicht unterstützt.
  • Spalten mit struct-Inhalt werden noch nicht unterstützt.
  • Das Befüllen einer Tabelle mit dem Inhalt mehrerer spezifischer (Geo)Parquet-Dateien wird noch nicht unterstützt. Es ist jedoch möglich, mehrere Dateien mit den Wildcard-Operatoren * und ? auszuwählen.
  • Das Verhalten bei Datensatzänderungen ist nicht getestet worden.
  • Die Konfiguration wird nicht auf Korrektheit überprüft. Dies gilt insbesondere für die S3-Konfiguration.
  • Bei großen S3-Datensätzen sind die Daten möglicherweise nicht sofort nach dem Anwendungsstart verfügbar, insbesondere wenn zuvor kein Cache aufgebaut wurde. Werden die Daten abgefragt, bevor sie bereitstehen, kann dies zum Fehler HTTP Error 503 führen. Nach einigen Minuten sollten die Daten verfügbar sein, die genaue Dauer hängt aber von der Größe der Dateien ab.
  • Der S3-Zugriff kann fehlschlagen, wenn S3-Zugangsdaten angegeben werden, obwohl der Bucket öffentlich ist.

Konfiguration

Optionen

NameDefaultBeschreibungTypSeit
connectionInfo
object
v2.0

Connection Info

Das Connection-Info-Objekt für GeoParquet hat die folgenden Eigenschaften:

NameDefaultBeschreibungTypSeit
database
Nur relevant für lokale (Geo)Parquet-Dateien: Der relative Pfad ausgehend von /resources/features zum Verzeichnis mit den (Geo)Parquet-Dateien bzw. Unterordnern mit (Geo)Parquet-Dateien.
string
v2.0
host
Nur relevant für S3: Die URL des Buckets mit den (Geo)Parquet-Dateien. Um den Zugriff einzuschränken, können Unterordner an die URL angehängt werden, z.B. s3://bucket-eu-central-1/Unterordner.
string
v2.0
user
Nur relevant für S3: Der access key für den Zugriff auf den Bucket. Darf für den Zugriff auf öffentliche Buckets nicht gesetzt werden.
string
v2.0
password
Nur relevant für S3: Der secret access key für den Zugriff auf den Bucket. Darf für den Zugriff auf öffentliche Buckets nicht gesetzt werden.
string
v2.0
driverOptions
Dieses Mapping dient sowohl der Zuordnung von Tabellennamen zu (Geo)Parquet-Dateien, als auch dem Konfigurieren von S3. Siehe Tabellenzuordnung und Konfiguration von S3 für Details.
object
v2.0

Tabellenzuordnung

Um mit (Geo)Parquet-Dateien zu arbeiten, muss konfiguriert werden, welche Tabellen es gibt und mit dem Inhalt welcher (Geo)Parquet-Dateien diese befüllt werden. Dazu ist eine Zuordnung von Tabellennamen zu den (Geo)Parquet-Dateien mit den entsprechenden Daten erforderlich. Diese Zuordnung wird in driverOptions festgelegt. Folgendes ist zu beachten:

  • Die Tabellennamen müssen im table Namensraum liegen, indem ihnen table. vorangestellt wird z. B. table.FOO
  • Bei S3 muss der Pfad relativ zur in host angegebenen URL sein. Bei lokalen Dateien muss er relativ zum Pfad in database sein.
  • Derzeit ist es nicht möglich, eine Tabelle mit dem Inhalt mehrerer spezifischer Dateien zu befüllen. Die Wildcard-Operatoren * und ? können jedoch verwendet werden, um Dateien nach einem bestimmten Muster auszuwählen. Beispiele:

connectionInfo:
 driverOptions:
   table.FOO: "Unterordner/foo.parquet" # Wähle eine bestimmte Datei aus
   table.BAR: "Unterordner/Unterordner_2/*.parquet" # Alle Parquet-Dateien in Unterordner/Unterordner_2/

Die Tabellennamen können anschließend in sourcePath referenziert werden:


types:
 beispiel:
   sourcePath: /FOO

Konfiguration von S3

Die möglichen Parameter sowie Standardwerte sind in der S3-Dokumentation von DuckDBopen in new window zu finden. Folgendes ist zu beachten:

  • Jeder Wert muss ein String sein. Dies gilt auch für boolesche Parameter (in diesem Fall "true" und "false" verwenden).
  • Die Schlüssel müssen in Kleinbuchstaben angegeben werden, z.B. "endpoint" für den Parameter ENDPOINT.
  • Die Parameter KEY_ID und SECRET müssen über user und password statt über driverOptions angegeben werden.
  • Der plattformspezifische Secret-Typ kann über den internen Parameter "type" angegeben werden. Gültige Optionen sind "s3", "r2" und "gcs". Für andere Provider "s3" verwenden und den ENDPOINT-Parameter entsprechend setzen.
  • Anstelle des Parameters SCOPE (der nicht unterstützt wird), den Unterordner als Teil der Bucket-URL in host angeben.

Beispiel für MinIO:


connectionInfo:
 host: "s3://geoparquet/Unterordner/"
 user: "KEY-ID"
 password: "SECRET KEY-ID"
 driverOptions:
   endpoint: "s3.minio-provider.net"
   use_ssl: "true"
   url_style: "path"
   table.TEST: "file.parquet"