Важно: Данный раздел актуален для Платформы данных On-Premise.
В документе приведено краткое описание интеграции RT.WareHouse с совместимыми коннекторами.
Документ предназначен для сотрудников ИТ подразделений, осуществляющих внедрение RT.WareHouse.
Примечание. Предполагается, что все приведенные продукты устанавливаются через RT.ClusterManager. |
В разделе приведена краткая инструкция интеграции RT.WareHouse и RT.DataLake (Hadoop).
Для интеграции необходимо:
1. Добавить в RT.DataLake пользователя gpadmin с нужными правами.
2. Добавить в RT.DataLake файл локально.
Создать файл:
cat <<EOF >/tmp/data.CSV
id,name
1,Alice
2,Bob
EOF
Добавить в RT.DataLake:
/bin/hadoop fs -copyFromLocal /tmp/data.CSV /urlf/data.CSV
3. Поправить ДНС на всех хостах с PXF:
sudo vi /etc/resolv.conf
Добавить в начало:
search your_company.local
nameserver <IP_адрес_сервера>
Запретить правки:
sudo chattr +i /etc/resolv.conf
Перезагрузить сеть:
sudo systemctl restart network
4. Добавить конфиги на мастере PXF с мастер узла RT.DataLake:
sudo -iu gpadmin
cp /tmp/core-site.xml $PXF_CONF/servers/default/
cp /tmp/hdfs-site.xml $PXF_CONF/servers/default/
Отключить имперсонализацию:
vi $PXF_CONF/conf/pxf-env.sh
export PXF_USER_IMPERSONATION=false
Применить на всех узлах, произвести синхронизацию и перезапуск:
pxf cluster sync
pxf cluster restart
5. Создать таблицу для проверки наличия данных:
psql -d postgres
create extension if not exists pxf;
CREATE EXTERNAL TABLE pxf_hdfs_text(id int, name text)
LOCATION ('pxf://urlf/data.CSV?PROFILE=hdfs:text')
FORMAT 'CSV' (header delimiter as E',');
select * from public.pxf_hdfs_text;
В разделе приведена краткая инструкция интеграции RT.WareHouse и Oracle.
Для интеграции необходимо:
1. Добавить в Oracle таблицу и внести данные:
CREATE TABLE "YOUR_SCHEMA"."TEST2"
( "ID" NUMBER(10,0),
"TEXT" VARCHAR2(255)
);
1. Положить драйвер ojdbc8 (https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8/12.2.0.1) в $PXF_BASE/lib .
2. Выполнить синхронизацию PXF:
pxf cluster sync
3. Выполнить перезапуск PXF:
pxf cluster restart
4. Создать таблицу для проверки наличия данных:
psql -d postgres
create extension if not exists pxf;
DROP external table if exists pxf_ora_r;
CREATE READABLE EXTERNAL TABLE pxf_ora_r(id int, text text)
LOCATION ('pxf://test2?PROFILE=JDBC&JDBC_DRIVER=oracle.jdbc.driver.OracleDriver&DB_URL=jdbc:oracle:thin:@<адрес>:1521/testdb&USER=<юзер>&PASS=<пароль>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
DROP external table if exists pxf_ora_w;
CREATE WRITABLE EXTERNAL TABLE pxf_ora_w(id int, text text)
LOCATION ('pxf://test2?PROFILE=JDBC&JDBC_DRIVER=oracle.jdbc.driver.OracleDriver&DB_URL=jdbc:oracle:thin:@<адрес>:1521/testdb&USER=<юзер>&PASS=<пароль>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export');
SELECT * FROM public.pxf_ora_r;
insert into public.pxf_ora_w values (10, 'test10');
SELECT * FROM public.pxf_ora_r;
В разделе приведена краткая инструкция интеграции RT.WareHouse и RT.WideStore (ClickHouse).
Для интеграции необходимо:
1. Добавить в RT.WideStore пользователя с нужными правами.
2. Добавить в RT.WideStore таблицу и внести в нее тестовые данные:
CREATE TABLE test (id int) ENGINE = Memory;
INSERT INTO test VALUES (1);
1. На мастере RT.WareHouse положить драйвер clickhouse-jdbc (https://github.com/ClickHouse/clickhouse-java/releases) в $PXF_BASE/lib .
2. Выполнить синхронизацию PXF:
pxf cluster sync
3. Выполнить перезапуск PXF:
pxf cluster restart
4. Создать таблицу для проверки наличия данных:
psql -d postgres
create extension if not exists pxf;
DROP external table if exists pxf_ch_r;
CREATE READABLE EXTERNAL TABLE pxf_ch_r(id int)
LOCATION ('pxf://test?PROFILE=JDBC&JDBC_DRIVER=com.clickhouse.jdbc.ClickHouseDriver&DB_URL=jdbc:clickhouse://<адрес>:8123/default&USER=<юзер>&PASS=<пароль>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
DROP external table if exists pxf_ch_w;
CREATE READABLE EXTERNAL TABLE pxf_ch_w(id int)
LOCATION ('pxf://test?PROFILE=JDBC&JDBC_DRIVER=com.clickhouse.jdbc.ClickHouseDriver&DB_URL=jdbc:clickhouse://<адрес>:8123/default&USER=<юзер>&PASS=<пароль>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export');
SELECT * FROM public.pxf_ch_r;
insert into public.pxf_ch_w values (2);
SELECT * FROM public.pxf_ch_r;
В разделе приведена краткая инструкция интеграции RT.WareHouse и Kafka.
Примечание. Предварительно: 1. Установить и запустить сервер Kafka, если он не запущен. 2. Добавить пользователя в Kafka с нужными правами. Инструкция по сборке/ установке и запуску сервера Kafka представлена в разделе 5.1. |
Для интеграции необходимо:
1. Создать топик (опционально):
bin/kafka-topics.sh --create --topic <topic> --bootstrap-server <server>
2. Запись в топик.
Примечание. Для записи данных в топик используется PXF с коннектором kafka-pxf-connector. Если коннектор еще не установлен, то его нужно собрать и установить следуя инструкции из раздела 5.2 «Сборка и установка коннектора kafka-pxf-connector». |
На стороне RT.WareHouse выполнить следующий скрипт:
CREATE WRITABLE EXTERNAL TABLE kafka_tbl (a TEXT, b TEXT, c TEXT)
LOCATION ('pxf://<topic>?PROFILE=kafka&BOOTSTRAP_SERVERS=<server>')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export');
insert into kafka_tbl values ('a', 'b,c', 'd'), ('x', 'y', 'z');
3. Чтение из топика.
В данный момент чтение из топика возможно только для RT.WareHouse 6.x и выше.
Примечание. Для записи данных из топика используется коннектор kafka_fdw. Если коннектор еще не установлен, то его нужно собрать и установить следуя инструкции из раздела 5.3 «Сборка и установка коннектора kafka_fdw». |
На стороне RT.WareHouse нужно:
CREATE SERVER kafka_server
FOREIGN DATA WRAPPER kafka_fdw
OPTIONS (brokers '<server>');
CREATE USER MAPPING FOR PUBLIC SERVER kafka_server;
CREATE FOREIGN TABLE kafka_test (
part int OPTIONS (partition 'true'),
offs bigint OPTIONS (offset 'true'),
a TEXT,
b TEXT,
c TEXT,
)
SERVER kafka_server OPTIONS
(format 'csv', topic '<topic>', batch_size '30', buffer_delay '100');
В таблице появятся данные, которые записали в топик.
Для сборки из исходников официального репозитория необходимо выполнить следующие команды:
git clone https://github.com/apache/kafka.git kafka
cd kafka
./gradlew jar
Для скачивания бинарников нужно перейти по ссылке https://downloads.apache.org/kafka/ и скачать последнюю версию. Далее предполагается, что это версия 2.12-3.2.0
tar -xzf kafka_2.13-3.2.0.tgz
cd kafka_2.13-3.2.0
Запускать сервер Kafka можно следующими командами:
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
Для работы коннектора необходима библиотека librdkafka.
Данная библиотека есть в репозиториях ОС и может быть установлена командами:
yum install librdkafka-devel
или
apt install librdkafka-dev
Внимание. Для сборки данного плагина необходим RT.Warehouse версии 6.x и выше. |
Для сборки из исходников официального репозитория и установки необходимо выполнить следующие команды:
git clone https://github.com/adjust/kafka_fdw.git
cd kafka_fdw
make && make install