Внешняя таблица - это таблица, в которой данные хранятся и управляются за пределами базы данных. Примером может служить файл CSV или TEXT.
Читаемая внешняя таблица содержит метаданные, хранящиеся в базе данных, и, как вы сказали, все данные хранятся в другом месте, например HDFS. Он также может быть локальной файловой системой для Greenplum. Наиболее распространенная внешняя таблица использует gpfdist для «подачи» файла (ов). gpfdist - это в основном веб-сервер, который могут считывать сразу несколько сегментов одновременно.
Пример:
Во-первых, начну gpfdist на четырех различных хостов. Эти хосты также должны быть доступны всем хостам сегмента.
[[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/ &
А теперь положить файл примера в каждом:
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
[[email protected]] hostname > /landing/hostname.txt
Создать внешнюю таблицу, чтобы прочитать его:
[[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 '');
Этот простой пример показывает файлы, управляемые вне базы данных, которые теперь доступный Greenplum с внешней таблицей.
Writable External Table изменяет это значение и позволяет записывать данные во внешнюю систему, такую как HDFS или файловая система posix.
[[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
Вариант использования для Writable External Table заключается в том, чтобы принимать данные в Greenplum и помещать их в другое место.
Общим примером является использование HDFS для Data Lake и Greenplum для Analytics. Вы можете считывать данные из HDFS с помощью внешней таблицы и вставлять их в таблицы Greenplum. Затем вы анализируете эти данные, используете аналитические функции из пакета Madlib и находите новые сведения о своих данных. Теперь вы хотите вывести эти новые данные из Greenplum обратно в HDFS, чтобы другие пользователи могли извлечь выгоду из понимания. Затем вы используете Writable External Table для INSERT данных из Greenplum в HDFS.
Наиболее распространенный прецедент для читаемой внешней таблицы - это загрузка файлов из внешних источников в Greenplum.