Подключение к внешнему файловому серверу
Greenplum® Parallel File Servergpfdist
) — утилита для чтения и записи данных из файлов, расположенных на удаленных серверах. Она установлена на всех хостах-сегментах кластера Managed Service for Greenplum® и обеспечивает параллельную загрузку данных, распределяя их между сегментами равномерно или согласно заданному ключу дистрибуции. Это повышает производительность при работе с большими объемами внешних данных.
Утилита gpfdist
может работать с любыми текстовыми файлами, которые содержат разделители, а также со сжатыми файлами gzip и bzip2.
Для чтения или записи файлов на внешнем сервере:
- Установите и запустите
gpfdist
в составе пакета Greenplum® Loader или Greenplum® Database на удаленном сервере, где находятся нужные файлы. - Создайте внешнюю таблицу, которая будет ссылаться на эти файлы, в базе данных Greenplum®.
Запуск gpfdist
Примечание
Скачивание и использование продуктов с сайта VMware не входит в условия использования Yandex Managed Service for Greenplum®
-
Скачайте и установите пакет Greenplum® Loader с сайта VMware
или пакет Greenplum® Database из бакета Yandex Object Storage по инструкции. -
Запустите утилиту
gpfdist
:gpfdist -d <директория_с_файлами_данных> -p <порт_подключения> -l <путь_к_файлу_логов>
Где:
<директория_с_файлами_данных>
— локальный путь к директории, в которой хранятся файлы для чтения или записи данных через внешнюю таблицу.<порт_подключения>
— порт, через который будет работать утилита. По умолчанию —8080
.<путь_к_файлу_логов>
— (опционально) путь к файлу, в которыйgpfdist
будет записывать логи своей работы.
Чтобы распределить нагрузку на сеть, вы можете запустить несколько экземпляров
gpfdist
на одном сервере, указав разные директории и порты для подключения, например:gpfdist -d /var/load_files1 -p 8081 -l /home/gpadmin/log1 & \ gpfdist -d /var/load_files2 -p 8082 -l /home/gpadmin/log2 &
-
Проверьте, что файлы в указанной директории доступны на указанном порту из Yandex Cloud. Для этого выполните команду с ВМ в Yandex Cloud:
wget http://hostname:port/filename
Создание внешней таблицы с использованием утилиты gpfdist
Синтаксис SQL-запроса для создания внешней таблицы:
CREATE [WRITABLE] EXTERNAL TABLE <имя_таблицы>
(<имя_столбца> <тип_данных> [, ...])
LOCATION('gpfdist://<путь_к_файлу_на_удаленном_сервере>' [, ...])
FORMAT '[TEXT|CSV|CUSTOM]';
Где:
<имя_таблицы>
— имя внешней таблицы, которая будет создана в базе данных Greenplum®.<имя_столбца>
— имя столбца таблицы.<тип_данных>
— тип данных столбца таблицы.<путь_к_файлу_на_удаленном_сервере>
— адрес сервера, на котором запущенgpfdist
, порт для подключения и путь к файлу. Вы можете указать конкретный файл или задать маску с помощью символа звездочки (*).
Опция WRITABLE
позволяет записывать данные во внешний объект. Чтобы считать данные из внешнего объекта, создайте внешнюю таблицу с опцией READABLE
.
Примеры создания внешних таблиц
-
Создание внешней таблицы с данными из файла
file.csv
на сервереhostname
:CREATE EXTERNAL TABLE tableName (id int) LOCATION('gpfdist://hostname:8080/file.csv') FORMAT 'CSV' (DELIMITER ',');
-
Создание внешней таблицы, объединяющей данные из всех файлов формата
txt
, где|
— символ разделителя, а пробел — значениеNULL
, на серверахhostname1
иhostname2
:CREATE EXTERNAL TABLE tableName (...) LOCATION('gpfdist://hostname1:8081/*.txt', 'gpfdist://hostname2:8081/*.txt') FORMAT 'TEXT' (DELIMITER '|' NULL ' ');
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.