2016-12-13 3 views
0

Ich lerne gpdb. Und ich bin auf externen Tischen verwirrt. Folgendes ist mein Verständnis.Wie GreenPlum externe Tabelle implementiert?

Für schreibgeschützte Tabellen erstellt gpdb nur Metadaten der Tabelle. Alle Daten werden wie hdfs auf einem entfernten Server gespeichert. Bei der Abfrage werden Daten vom Remote-Server zum Segment übertragen. Daten werden nicht in Segmenten gespeichert, wenn die Abfrage endet.

Für schreibgeschützte Tabellen lädt gpdb Daten von Remote. Alle Daten werden in Segmenten gespeichert. Insert action ändert Daten im lokalen Segment, nicht remote.

Ist mein Verständnis richtig?

Antwort

2

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.

Verwandte Themen