Processing examples — Этап3B¶
Раздел03 · Отчёт (архив рабочего проекта) · Реальные результаты проверок (архив рабочего проекта)
Тип материала: учебная лабораторная работа. Данные и архитектурные сценарии иллюстративные; модель не описывает production financial ledger. Код исполняемый при перечисленных dependencies. Фактически выполненные тесты зафиксированы в execution checks; ожидаемые outputs не подтверждают выполнение интеграции.
Setup¶
Команды PowerShell из корня handbook:
Set-Location examples/processing
python -m venv .venv
$labPython = (Resolve-Path .venv/Scripts/python.exe).Path
& $labPython -m pip install -r requirements.txt
& $labPython prepare_inputs.py
Прямые зависимости, lock локального QA environment. Для Linux использовать .venv/bin/python и .venv/bin/dbt. Python3.12; Spark требует полного JDK17/21, Flink runtime pinned Java17. Не менять system JAVA_HOME ради lab: можно выбрать JDK для одного дочернего процесса. Airflow3.1 runtime предполагается Linux container.
JSON raw5 → unique4 preparation фиксирует bounded fixture и проверяет conflicts; это не обещание live streaming dedup. Expected reporting totals: t7/EUR275, t8/EUR50. Ledger, broker failover, cloud API и production source extraction не реализованы этим local fixture.
Broker / CDC setup¶
Core Compose: Kafka4.1.0, PostgreSQL17.6, Debezium3.3.1.Final. Один broker/RF1 — isolated functional demo, не HA sizing. Credentials local-only, порты bind127.0.0.1. Docker daemon нужен только для runtime; config CLI работает без него.
docker compose config --quiet
docker compose up -d
docker compose exec kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --if-not-exists --topic handbook.events --partitions 3 --replication-factor 1
На чистом topic первые5 records соответствуют fixture; многократный запуск producers добавляет новые sends. Consumer group и local database выбирайте осознанно. Для независимого эксперимента можно остановить этот Compose project и использовать другое -p имя; volumes автоматически не удаляются. Internal/transaction topic replication настроена1 только для demo. Image availability/startup и embedded Connect version не были проверены pull/run.
Optional runtimes: Flink, Airflow, NiFi и Linux Spark через profiles. Только нужный profile; NiFi сохраняет HTTPS и требует доверенного local certificate. Dockerfile Spark использует Linux/Java17 вместо проблемного Windows NativeIO.
Двенадцать примеров¶
- Kafka producer / consumer
- Kafka idempotent producer
- Kafka consumer с manual commit
- Debezium PostgreSQL CDC
- Flink windowed aggregation
- Spark Structured Streaming
- Airflow DAG с Dynamic Task Mapping
- Airflow backfill
- NiFi flow configuration
- Kafka Connect connector configuration
- DLQ / retry consumer
- SQL reconciliation / dbt runtime
Что реально проверено¶
Локально исполнены SQLite inbox+projection transaction с injected SQL failure/replay/conflict, JSON Schema/Avro contracts, reporting helpers и dbt/DuckDB build/reconciliation. Compose config, AST и CLI imports — отдельный static/import scope. Spark streaming attempt завершился ошибкой Windows NativeIO; Kafka/Connect/PG/Flink/Airflow/NiFi integrations не запускались из-за отсутствия daemon/runtime. Полный журнал (архив рабочего проекта).
Schema files: JSON Schema, Avro, Protobuf. Registry/API compatibility и Protobuf compilation не проверены. Данные и manifests не должны содержать production PII/secrets. Пример не утверждает TPS/latency/SLA.
Остановка¶
docker compose stop
docker compose -f compose-runtimes.yaml --profile '*' stop
Volumes и local output сохраняются для inspection/replay. Новый независимый эксперимент использует новый group/database/generation либо другой isolated Compose project; existing data автоматически не удаляются.