- По умолчанию bash ./scripts/load_kafka_data.sh Resetting topics: browser_events location_events device_events geo_events Loading mode: full (LIMIT=unset) Bootstrap (inside container): kafka:29092 Publishing: data/browser_events.jsonl -> browser_events (full) Publishing: data/device_events.jsonl -> device_events (full) Publishing: data/geo_events.jsonl -> geo_events (full) Publishing: data/location_events.jsonl -> location_events (full) Done. загружает все записи из файлов (вместо 50 строк) - Для ограничения используется bash ./scripts/load_kafka_data.sh - Удалён устаревший параметр Изменённые файлы: - scripts/load_kafka_data.sh — обновлена логика и документация - plans/runbook.md — обновлены примеры использования - plans/kafka_ingest_plan.md — обновлён план реализации Теперь: - bash ./scripts/load_kafka_data.sh Resetting topics: browser_events location_events device_events geo_events Loading mode: full (LIMIT=unset) Bootstrap (inside container): kafka:29092 Publishing: data/browser_events.jsonl -> browser_events (full) Publishing: data/device_events.jsonl -> device_events (full) Publishing: data/geo_events.jsonl -> geo_events (full) Publishing: data/location_events.jsonl -> location_events (full) Done. — все записи (4000 сообщений) - bash ./scripts/load_kafka_data.sh Resetting topics: browser_events location_events device_events geo_events Loading mode: slice (LIMIT=50) Bootstrap (inside container): kafka:29092 Publishing: data/browser_events.jsonl -> browser_events (first 50 lines) Publishing: data/device_events.jsonl -> device_events (first 50 lines) Publishing: data/geo_events.jsonl -> geo_events (first 50 lines) Publishing: data/location_events.jsonl -> location_events (first 50 lines) Done. — 50 строк каждого типа (200 сообщений)
3.7 KiB
3.7 KiB
Runbook: запуск демо и загрузка данных
Этот документ фиксирует порядок действий и make‑таргеты. Он не описывает внутренности ClickHouse‑слоёв (это в plans/clickhouse_ddl.md).
Предпосылки
- Docker + Docker Compose.
- Доступ к Docker daemon (если
docker compose ...пишетpermission denied ... /var/run/docker.sock, добавьте пользователя в группуdockerили запускайте команды с правами, принятыми в вашей среде).
Быстрый сценарий
- Поднять инфраструктуру:
make up
- (Опционально) Залить данные в Kafka:
make data
make data не зависит от ClickHouse/DDL — достаточно, чтобы Kafka была поднята.
- Применить DDL в ClickHouse:
make ddl
Make таргеты
make up—docker compose up -d(поднимает весь стек изdocker-compose.yml).make ddl— применяет исполняемые SQL-файлы изsql/ddl/*в контейнер ClickHouse черезclickhouse-client.make data— пересоздаёт топики (по умолчанию) и публикует события изdata/*.jsonlв Kafka (1 строка = 1 Kafka message value).make transform— выполняет batch-процессSTG -> ODS -> DDS -> DMчерезscripts/run_batch.sh.
План реализации механики заливки (дизайн/решения): plans/kafka_ingest_plan.md.
Загрузка данных в Kafka (make data)
Топики
Скрипт использует фиксированный маппинг:
data/browser_events.jsonl→browser_eventsdata/location_events.jsonl→location_eventsdata/device_events.jsonl→device_eventsdata/geo_events.jsonl→geo_events
Режимы загрузки
- По умолчанию — “debug срез”: первые 50 строк каждого файла.
- Полная загрузка — весь файл.
Параметры (env):
LIMIT— сколько строк брать из каждого.jsonl. По умолчанию загружаются все записи (весь файл). Для ограничения используйтеLIMIT=50илиLIMIT=100.RESET_TOPICS— еслиRESET_TOPICS=1(по умолчанию), топики удаляются и создаются заново с теми же именами.BOOTSTRAP_SERVER— bootstrap для Kafka изнутри kafka‑контейнера (по умолчаниюkafka:29092).
Примеры:
# Загрузить все данные (по умолчанию)
make data
# Быстрый тест — 50 строк на поток
LIMIT=50 make data
# Ограниченная загрузка — 100 строк на поток
LIMIT=100 make data
# Дозалить данные без пересоздания топиков
RESET_TOPICS=0 make data
Применение DDL в ClickHouse (make ddl)
Скрипт исполняет SQL-файлы из sql/ddl/* по фиксированному порядку. Для ENGINE = Kafka важно, чтобы kafka_broker_list был доступен из контейнера ClickHouse.
В текущем compose:
- для соединений “контейнер → Kafka” используйте
kafka:29092; localhost:9092подходит только для клиентов на хосте.