Первоначальная реализация PXF (не тестировано)
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
# Общие настройки
|
||||
TZ=Europe/Moscow
|
||||
|
||||
# Airflow Configuration
|
||||
AIRFLOW_USER=admin
|
||||
AIRFLOW_PASSWORD=admin
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
- `SELECT COUNT(*) FROM public.orders;` — оценка объёма.
|
||||
- `SELECT * FROM public.orders LIMIT 5;` — визуальная проверка.
|
||||
- `SELECT order_id FROM public.orders GROUP BY 1 HAVING COUNT(*) > 1;` — поиск дублей.
|
||||
- (после настройки PXF) `SELECT COUNT(*) FROM public.ext_bookings_bookings;` — проверка чтения из демо-БД bookings через PXF.
|
||||
- (после настройки PXF) `SELECT * FROM public.ext_bookings_bookings LIMIT 5;` — визуальное сравнение с таблицей `bookings.bookings` в исходной БД.
|
||||
- Завершить `\q`.
|
||||
|
||||
## 6. Негативные сценарии и fallback
|
||||
|
||||
@@ -5,6 +5,7 @@ services:
|
||||
# container_name: gp_pgmeta
|
||||
env_file: .env
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
POSTGRES_USER: ${PG_USER}
|
||||
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
||||
POSTGRES_DB: ${PG_DB}
|
||||
@@ -23,6 +24,7 @@ services:
|
||||
image: postgres:16
|
||||
env_file: .env
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
POSTGRES_USER: ${BOOKINGS_DB_USER}
|
||||
POSTGRES_PASSWORD: ${BOOKINGS_DB_PASSWORD}
|
||||
POSTGRES_DB: ${BOOKINGS_DB_NAME}
|
||||
@@ -43,15 +45,19 @@ services:
|
||||
# container_name: gp_single
|
||||
# hostname: gpdbsne
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
GREENPLUM_USER: ${GP_USER:-gpadmin}
|
||||
GREENPLUM_PASSWORD: ${GP_PASSWORD:-gpadmin}
|
||||
GREENPLUM_DATABASE_NAME: ${GP_DB:-gpadmin}
|
||||
GREENPLUM_PXF_ENABLE: "true"
|
||||
# GP_PORT: ${GP_PORT:-5432}
|
||||
# Порты: внешний 5432
|
||||
ports:
|
||||
- "${GP_PORT}:5432"
|
||||
volumes:
|
||||
- ./sql:/sql:ro
|
||||
- ./pxf/postgresql-42.7.3.jar:/data/pxf/lib/postgresql-jdbc.jar:ro
|
||||
- ./pxf/servers/bookings-db/jdbc-site.xml:/data/pxf/servers/bookings-db/jdbc-site.xml:ro
|
||||
- greenplum_data:/data
|
||||
- airflow_data:/opt/airflow/data
|
||||
# Простая проверка доступности: psql откликается
|
||||
@@ -66,6 +72,7 @@ services:
|
||||
container_name: gp_airflow_web
|
||||
env_file: .env
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
AIRFLOW__CORE__LOAD_EXAMPLES: "False"
|
||||
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${PG_USER}:${PG_PASSWORD}@pgmeta:5432/${PG_DB}
|
||||
AIRFLOW__WEBSERVER__SECRET_KEY: ${AIRFLOW__WEBSERVER__SECRET_KEY}
|
||||
@@ -89,6 +96,7 @@ services:
|
||||
container_name: gp_airflow_sch
|
||||
env_file: .env
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
AIRFLOW__CORE__LOAD_EXAMPLES: "False"
|
||||
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${PG_USER}:${PG_PASSWORD}@pgmeta:5432/${PG_DB}
|
||||
AIRFLOW__WEBSERVER__SECRET_KEY: ${AIRFLOW__WEBSERVER__SECRET_KEY}
|
||||
@@ -110,6 +118,7 @@ services:
|
||||
# container_name: gp_airflow_init
|
||||
env_file: .env
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Moscow}
|
||||
AIRFLOW__CORE__LOAD_EXAMPLES: "False"
|
||||
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${PG_USER}:${PG_PASSWORD}@pgmeta:5432/${PG_DB}
|
||||
AIRFLOW__WEBSERVER__SECRET_KEY: ${AIRFLOW__WEBSERVER__SECRET_KEY}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
JDBC-конфиг для PXF-сервера bookings-db.
|
||||
Для учебного стенда используем те же дефолтные креды, что и в .env.example:
|
||||
BOOKINGS_DB_USER=bookings, BOOKINGS_DB_PASSWORD=bookings.
|
||||
При изменении этих параметров в .env не забывайте обновить их здесь.
|
||||
-->
|
||||
<configuration>
|
||||
|
||||
<property>
|
||||
<name>jdbc.driver</name>
|
||||
<value>org.postgresql.Driver</value>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>jdbc.url</name>
|
||||
<value>jdbc:postgresql://bookings-db:5432/demo</value>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>jdbc.user</name>
|
||||
<value>bookings</value>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>jdbc.password</name>
|
||||
<value>bookings</value>
|
||||
</property>
|
||||
|
||||
</configuration>
|
||||
|
||||
@@ -10,3 +10,13 @@ CREATE TABLE IF NOT EXISTS public.orders (
|
||||
)
|
||||
WITH (appendonly=true, orientation=row, compresstype=zlib, compresslevel=1)
|
||||
DISTRIBUTED BY (order_id);
|
||||
|
||||
-- Внешняя таблица для чтения данных из демо-БД bookings через PXF (JDBC).
|
||||
-- Источник: таблица bookings.bookings в базе demo (Postgres, сервис bookings-db).
|
||||
CREATE EXTERNAL TABLE IF NOT EXISTS public.ext_bookings_bookings (
|
||||
book_ref CHAR(6),
|
||||
book_date TIMESTAMP WITH TIME ZONE,
|
||||
total_amount NUMERIC(10,2)
|
||||
)
|
||||
LOCATION ('pxf://bookings.bookings?PROFILE=JDBC&SERVER=bookings-db')
|
||||
FORMAT 'CUSTOM' (formatter='pxfwritable_import');
|
||||
|
||||
Reference in New Issue
Block a user