Тестирование PXF
This commit is contained in:
+3
-2
@@ -56,8 +56,9 @@ services:
|
|||||||
- "${GP_PORT}:5432"
|
- "${GP_PORT}:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- ./sql:/sql:ro
|
- ./sql:/sql:ro
|
||||||
- ./pxf/postgresql-42.7.3.jar:/data/pxf/lib/postgresql-jdbc.jar:ro
|
- ./pxf/postgresql-42.7.3.jar:/pxf-local/postgresql-42.7.3.jar:ro
|
||||||
- ./pxf/servers/bookings-db/jdbc-site.xml:/data/pxf/servers/bookings-db/jdbc-site.xml:ro
|
- ./pxf/servers/bookings-db:/pxf-local/servers/bookings-db:ro
|
||||||
|
- ./pxf/init/10_pxf_bookings.sh:/docker-entrypoint-initdb.d/10_pxf_bookings.sh:ro
|
||||||
- greenplum_data:/data
|
- greenplum_data:/data
|
||||||
- airflow_data:/opt/airflow/data
|
- airflow_data:/opt/airflow/data
|
||||||
# Простая проверка доступности: psql откликается
|
# Простая проверка доступности: psql откликается
|
||||||
|
|||||||
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Простой init-скрипт для настройки PXF:
|
||||||
|
# - кладёт JDBC-драйвер PostgreSQL в каталог PXF;
|
||||||
|
# - копирует jdbc-site.xml для сервера bookings-db;
|
||||||
|
# - выполняет pxf cluster sync.
|
||||||
|
# Скрипт выполняется только при первой инициализации Greenplum (пустой /data).
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
GREENPLUM_USER=${GREENPLUM_USER:-gpadmin}
|
||||||
|
PXF_BASE_DEFAULT="${GREENPLUM_DATA_DIRECTORY:-/data}/pxf"
|
||||||
|
|
||||||
|
# Пробуем подтянуть PXF_BASE из .bashrc пользователя Greenplum
|
||||||
|
if [ -f "/home/${GREENPLUM_USER}/.bashrc" ]; then
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "/home/${GREENPLUM_USER}/.bashrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PXF_BASE=${PXF_BASE:-$PXF_BASE_DEFAULT}
|
||||||
|
|
||||||
|
mkdir -p "${PXF_BASE}/lib" "${PXF_BASE}/servers/bookings-db"
|
||||||
|
|
||||||
|
# Копируем JAR-драйвер, если он ещё не установлен
|
||||||
|
if [ -f /pxf-local/postgresql-42.7.3.jar ] && [ ! -f "${PXF_BASE}/lib/postgresql-jdbc.jar" ]; then
|
||||||
|
cp /pxf-local/postgresql-42.7.3.jar "${PXF_BASE}/lib/postgresql-jdbc.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Копируем jdbc-site.xml для сервера bookings-db, если его нет
|
||||||
|
if [ -f /pxf-local/servers/bookings-db/jdbc-site.xml ] && [ ! -f "${PXF_BASE}/servers/bookings-db/jdbc-site.xml" ]; then
|
||||||
|
cp /pxf-local/servers/bookings-db/jdbc-site.xml "${PXF_BASE}/servers/bookings-db/jdbc-site.xml"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Синхронизируем конфигурацию PXF (на всякий случай)
|
||||||
|
if command -v pxf >/dev/null 2>&1; then
|
||||||
|
pxf cluster sync || true
|
||||||
|
fi
|
||||||
|
|
||||||
+3
-2
@@ -13,9 +13,10 @@ DISTRIBUTED BY (order_id);
|
|||||||
|
|
||||||
-- Внешняя таблица для чтения данных из демо-БД bookings через PXF (JDBC).
|
-- Внешняя таблица для чтения данных из демо-БД bookings через PXF (JDBC).
|
||||||
-- Источник: таблица bookings.bookings в базе demo (Postgres, сервис bookings-db).
|
-- Источник: таблица bookings.bookings в базе demo (Postgres, сервис bookings-db).
|
||||||
CREATE EXTERNAL TABLE IF NOT EXISTS public.ext_bookings_bookings (
|
DROP EXTERNAL TABLE IF EXISTS public.ext_bookings_bookings;
|
||||||
|
CREATE EXTERNAL TABLE public.ext_bookings_bookings (
|
||||||
book_ref CHAR(6),
|
book_ref CHAR(6),
|
||||||
book_date TIMESTAMP WITH TIME ZONE,
|
book_date TIMESTAMP,
|
||||||
total_amount NUMERIC(10,2)
|
total_amount NUMERIC(10,2)
|
||||||
)
|
)
|
||||||
LOCATION ('pxf://bookings.bookings?PROFILE=JDBC&SERVER=bookings-db')
|
LOCATION ('pxf://bookings.bookings?PROFILE=JDBC&SERVER=bookings-db')
|
||||||
|
|||||||
Reference in New Issue
Block a user