Eine externe Tabelle ist eine Tabelle, in der die Daten außerhalb der Datenbank gespeichert und verwaltet werden. Ein Beispiel wäre eine CSV- oder TEXT-Datei.
Bei einer lesbaren externen Tabelle werden die Metadaten in der Datenbank gespeichert. Wie Sie bereits gesagt haben, werden alle Daten an einer anderen Stelle wie HDFS gespeichert. Es kann auch das lokale Dateisystem zu Greenplum sein. Die häufigste externe Tabelle verwendet gpfdist, um die Datei (en) zu "bedienen". gpfdist ist im Grunde genommen ein Webserver, den mehrere Segmente gleichzeitig lesen können.
Beispiel:
Zuerst werde ich gpfdist auf vier verschiedenen Hosts starten. Diese Hosts müssen auch für alle Segmenthosts zugänglich sein.
[[email protected]] gpfdist -p 8999 -d /landing/ &
[[email protected]] gpfdist -p 8999 -d /landing/ &
[[email protected]] gpfdist -p 8999 -d /landing/ &
[[email protected]] gpfdist -p 8999 -d /landing/ &
und legten nun eine Beispieldatei in jedem:
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
eine externe Tabelle erstellen, es zu lesen:
[[email protected]] psql
gpadmin=# create external table public.ext_hostnames
(hostname text)
location (
'gpfdist://host1:8999/hostname.txt',
'gpfdist://host2:8999/hostname.txt',
'gpfdist://host3:8999/hostname.txt',
'gpfdist://host4:8999/hostname.txt')
format 'text' (delimiter '|' null as '');
Dieses einfache Beispiel zeigt Dateien außerhalb der Datenbank verwaltet, die jetzt zugänglich von Greenplum mit einem externen Tisch.
Eine beschreibbare externe Tabelle kehrt das um und ermöglicht das Schreiben von Daten auf ein externes System wie HDFS oder das Posix-Dateisystem.
[[email protected]] gpfdist -p 8999 -d /home/gpadmin/ &
[[email protected]] psql
gpadmin=# create writable external table public.wrt_example
(foo text)
location ('gpfdist://master:8999/foo.txt')
format 'text' (delimiter '|' null as '');
insert into public.wrt_example values ('jon');
gpadmin=# insert into public.wrt_example select 'jon';
gpadmin=# \q
[[email protected]] cat /home/gpadmin/foot.txt
jon
Der Anwendungsfall für eine beschreibbare externe Tabelle besteht darin, Daten in Greenplum aufzunehmen und woanders abzulegen.
Ein häufiges Beispiel ist, wenn Sie HDFS für einen Data Lake und Greenplum für Analytics verwenden. Sie können Daten aus HDFS mit einer externen Tabelle lesen und sie in Greenplum-Tabellen einfügen. Sie analysieren dann diese Daten, verwenden analytische Funktionen aus dem Madlib-Paket und finden neue Erkenntnisse über Ihre Daten. Jetzt möchten Sie diese neuen Daten von Greenplum wieder in HDFS übertragen, damit andere Verbraucher von den Erkenntnissen profitieren können. Sie verwenden dann eine beschreibbare externe Tabelle, um die Daten von Greenplum in HDFS einzufügen.
Der häufigste Anwendungsfall für eine lesbare externe Tabelle ist das Laden von Dateien aus externen Quellen in Greenplum.