Обзор NiFi ADB Connector
Обзор
NiFI ADB Connector обеспечивает высокоскоростную параллельную запись данных из NiFi в Arenadata DB (ADB).
Начиная с ADS 3.9.0.1.b1 в пользовательском интерфейсе NiFi для создания NiFI ADB Connector доступны компоненты разработки Arenadata: процессор PutGreenplumRecord и сервис контроллера StandartGpfdistService.
Архитектура NiFI ADB Connector
Процессоры PutGreenplumRecord собирают данные и передают их в сервис контроллера StandartGpfdistService, который, используя встроенный протокол gpfdist, подключается к ADB через сервис пула подключений к базе данных GreenplumDBCPConnectionPool.
Greenplum Parallel File Server (gpfdist) — утилита Greenplum для чтения и записи данных из файлов, расположенных на удаленных серверах. Она установлена на всех хостах кластера ADB и обеспечивает параллельную загрузку данных, распределяя их между сегментами равномерно или согласно заданному ключу распределения данных.
PutGreenplumRecord
PutGreenplumRecord — процессор NIFI, обрабатывающий входные записи через приемник gpfdist, который создается StandartGpfdistService.
Ниже приведены параметры процессора.
Параметр | Обязательность | Описание | Значение по умолчанию |
---|---|---|---|
Gpfdist Service |
true |
Ссылка на запущенный сервис контроллера StandartGpfdistService |
— |
Record Reader |
true |
Ссылка на запуск одного из сервисов контроллера: CSVReader, AvroReader или другого, в зависимости от источника входных данных |
— |
Schema Name |
false |
Имя схемы, куда будут загружены данные |
null |
Table Name |
true |
Имя таблицы, в которую будут загружены данные |
— |
Table Columns |
true |
Столбцы таблицы, куда будут загружены данные |
— |
StandartGpfdistService
StandartGpfdistService — сервис контроллера для записи данных в сегменты ADB, использующий механизм читающей внешней таблицы с версией протокола gpfdist = 1.
Ниже приведены параметры сервиса контроллера.
Параметр | Обязательность | Описание | Значение по умолчанию |
---|---|---|---|
Listening Port |
true |
Порт для прослушивания входящих запросов gpfdist |
— |
Database Connection Pooling Service |
true |
Ссылка на настроенный сервис контроллера DBCPConnectionPool |
— |
Minimum Gpffist Server Threads |
false |
Минимальное количество потоков, используемых для запуска сервера gpfdist |
1 |
Maximum Gpffist Server Threads |
false |
Максимальное количество потоков, используемых для запуска сервера gpfdist |
4 |
The Maximum Gpffist Server Threads Idle Timeout |
false |
Максимальное время простоя потоков сервера gpfdist в миллисекундах |
60000 |
Write buffer size in bytes |
false |
Размер буфера записи байтов для сериализованных записей |
1Mb |
Maximum Record Processor Threads |
false |
Максимальное количество потоков, используемых для обработки записей |
8 |
Maximum Gpfdist Request Processor Threads |
false |
Максимальное количество потоков, используемых для обработки запроса gpfdist |
8 |
GreenplumDBCPConnectionPool
GreenplumDBCPConnectionPool — сервис для подключения к ADB. Представляет собой сервис пула подключений к базе данных.
Поддерживаемые типы данных
Сопоставление типов данных ADB с типами полей записей NiFi приведено ниже.
Тип данных ADB | Тип данных поля записи NiFi | Комментарий |
---|---|---|
BIT |
BOOLEAN |
— |
BOOLEAN |
BOOLEAN |
— |
SMALLINT |
SHORT, INT |
Размер значения должен быть меньше 2 байт |
INTEGER |
INT |
— |
BIGINT |
BIGINT, LONG |
— |
REAL |
FLOAT |
— |
DOUBLE |
DOUBLE |
— |
NUMERIC(p, s) |
DECIMAL |
— |
CHAR(n) |
STRING |
— |
VARCHAR(n) |
STRING |
— |
ENUM |
STRING |
— |
BYTEA |
BYTE[], STRING |
Для типа STRING значение должно быть записано в шестнадцатеричном формате, например: |
DATE |
DATE |
— |
TIME(n) |
TIME |
— |
TIMESTAMP(n) |
TIMESTAMP |
— |
TIMESTAMPTZ(n) |
TIMESTAMP |
— |
MONEY |
DECIMAL, STRING, DOUBLE, FLOAT |
— |
UUID |
STRING |
— |
JSONB |
STRING |
— |
HSTORE |
STRING, MAP(STRING, STRING) |
Для типа STRING значение должно быть в формате |
ARRAY |
STRING, STRING[] |
Для типа STRING значение должно быть в формате |