фикс бага pxf
This commit is contained in:
@@ -137,6 +137,34 @@ make gp-psql # Подключение к Greenplum
|
||||
|
||||
---
|
||||
|
||||
### Greenplum + PXF: свой образ
|
||||
|
||||
Чтобы избежать проблем с правами и нестабильных запусков, Greenplum собирается
|
||||
из собственного `Dockerfile.greenplum`. В образ вшиты:
|
||||
|
||||
- JDBC-драйвер PostgreSQL;
|
||||
- конфигурация PXF-сервера `bookings-db`;
|
||||
- ensure-скрипт, который при каждом старте контейнера докладывает файлы в `PXF_BASE`.
|
||||
|
||||
Дополнительно при старте контейнера:
|
||||
|
||||
- базовые конфиги PXF копируются в `PXF_BASE/conf` (если их ещё нет);
|
||||
- создаются каталоги `PXF_BASE/run` и `PXF_BASE/logs`;
|
||||
- `CREATE EXTENSION pxf` выполняется автоматически, когда Greenplum становится доступен.
|
||||
|
||||
Сборка и запуск:
|
||||
|
||||
- `make build` — собрать образ (явно);
|
||||
- `make up` — поднимет стек и соберёт образ, если он ещё не создан.
|
||||
|
||||
Обновление PXF-конфигов:
|
||||
|
||||
- изменили файлы в `pxf/` → выполните `make build` и перезапустите контейнер;
|
||||
- для принудительной перезаписи файлов в `PXF_BASE` используйте `PXF_SEED_OVERWRITE=1`;
|
||||
- для принудительного `pxf cluster sync` при старте используйте `PXF_SYNC_ON_START=1`.
|
||||
|
||||
---
|
||||
|
||||
### Локальное окружение разработчика
|
||||
|
||||
Локальным окружением управляет [uv](https://docs.astral.sh/uv/) — он скачивает нужный Python и создаёт `.venv` на основе `pyproject.toml` / `uv.lock`.
|
||||
@@ -378,6 +406,9 @@ load_bookings_to_stg = PostgresOperator(
|
||||
| Нет файла в `./data` после запуска DAG | Проверьте логи задачи `generate_csv`, убедитесь, что `CSV_DIR` смонтирован в docker-compose |
|
||||
| Команда `make` не найдена | Используйте полные команды `docker compose` или установите make |
|
||||
| Greenplum не стартует/падает при старте | Выполните `make down`, затем `make up` (очищает тома и поднимает заново, включая авто‑инициализацию Airflow) |
|
||||
| `protocol "pxf" does not exist` | Перезапустите `greenplum` и повторите `bookings_stg_ddl`/`make ddl-gp` — расширение `pxf` создаётся автоматически при старте контейнера. |
|
||||
| PXF не отвечает (Connection refused к порту 5888) | Проверьте `pxf cluster status` в контейнере `greenplum` и перезапустите сервис `greenplum`. |
|
||||
| PXF не подхватывает изменения конфигов | Пересоберите образ (`make build`) и перезапустите `greenplum`. Для принудительной перезаписи файлов задайте `PXF_SEED_OVERWRITE=1`. |
|
||||
| DAG `bookings_to_gp_stage` падает на внешней таблице/подключении к bookings | Убедитесь, что запущен контейнер `bookings-db` (`docker compose ps`, при необходимости `docker compose start bookings-db`), и выполнены `make bookings-init` и `make ddl-gp` или DAG `bookings_stg_ddl` |
|
||||
| DAG `bookings_to_gp_stage` ругается на отсутствующие таблицы stg | Запустите DAG `bookings_stg_ddl` (или выполните `make ddl-gp`), затем повторите запуск |
|
||||
| DAG не видит Greenplum/DEMObase по Airflow Connections | Убедитесь, что контейнеры `greenplum` и `bookings-db` запущены (`docker compose ps`). Подключения `greenplum_conn` и `bookings_db` задаются через переменные окружения `AIRFLOW_CONN_...` и могут не отображаться в UI, но `PostgresOperator` всё равно найдёт их по `conn_id`. При необходимости вы можете создать/отредактировать их вручную в разделе Connections. |
|
||||
@@ -388,6 +419,8 @@ load_bookings_to_stg = PostgresOperator(
|
||||
|
||||
```
|
||||
├── docker-compose.yml # Описание всех сервисов
|
||||
├── Dockerfile.airflow # Образ Airflow с зависимостями
|
||||
├── Dockerfile.greenplum # Образ Greenplum с интегрированным PXF
|
||||
├── .env.example # Шаблон настроек
|
||||
├── Makefile # Удобные команды для работы
|
||||
├── README.md # Обзор стенда
|
||||
@@ -432,6 +465,3 @@ load_bookings_to_stg = PostgresOperator(
|
||||
- **woblerr** — за Docker-сборку Greenplum: https://github.com/woblerr/docker-greenplum (образ: `woblerr/greenplum`, лицензия MIT: https://github.com/woblerr/docker-greenplum/blob/master/LICENSE).
|
||||
|
||||
Удачи в изучении Data Engineering! 🚀
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user