KSQL — это движок SQL с открытым исходным кодом для Apache Kafka. Он обеспечивает простой, но мощный интерактивный SQL интерфейс для потоковой обработки на Kafka, без необходимости писать код на языке программирования, таком как Java или Python.
SELECT * FROM payments-kafka-stream WHERE fraud_probability > 0.8
KSQL поддерживает широкий спектр потоковых операций, включая фильтрацию данных, преобразования, агрегации, соединения, оконные операции и сессии. Он является масштабируемым, отказоустойчивым и позволяет в режиме реального времени удовлетворить потребности бизнеса в данных.
Теперь вы можете задаться вопросом, для чего я могу использовать KSQL? Вот несколько примеров:
Мониторинг и аналитика в реальном времени
Одним из возможных вариантов использования KSQL является определение настраиваемых бизнес метрик, вычисляемых в режиме реального времени, с помощью которых можно получать оповещения и выполнять мониторинг. Например, можно посмотреть число одновременных игроков онлайн-игры:
- Чем заняты наши игроки?
- Влияет ли последнее обновление игры на увеличение игрового времени?
или получить отчетность о количестве оставленных корзин в интернет-магазине
- Последнее обновление для нашего интернет-магазина помогло клиентам завершить заказ?
KSQL позволяет легко определить соответствующие метрики из потока необработанных событий, независимо от того, генерируются ли они из баз данных, приложений, мобильных устройств или чего-то другого:
CREATE TABLE possibly_failing_vehicles AS
SELECT vehicle, COUNT(*) FROM vehicle_monitoring_stream
WINDOW TUMBLING (SIZE 5 MINUTES)
WHERE event_type=’ERROR’ GROUP BY vehicle HAVING COUNT(*)>2;
Интеграция и обогащение данных в режиме онлайн
Одним из главных процессов обработки данных в компаниях является их обогащение (enrichment) . Для этого необходимо взять данных из нескольких баз данных, преобразовать их, соединить вместе и сохранить в каком-то хранилище. KSQL, при использовании Kafka для соединения с такими системами, как Oracle, MySQL, Elastic Search, HDFS или S3, позволяет перейти от интеграции пакетных данных к интеграции данных в реальном времени.
Как показано в запросе KSQL ниже, вы можете обогатить потоки данных метаданными, хранящимися в таблицах, используя соединения stream-table, или сделать простую фильтрацию личной информации (PII) перед загрузкой потока в другую систему.
CREATE STREAM vip_users AS SELECT user_id, user_country, web_page, action
FROM website_clickstreamc LEFTJOIN usersu ON u.user_id=c.user_id WHERE u.level='Platinum';
Безопасность и обнаружение аномалий
Запросы KSQL могут преобразовывать потоки событий в агрегаты числовых временных рядов, которые потом передаются в такие системы, как например Elastic. Используя соединение Kafka—Elastic, вы можете затем в режиме реального времени визуализировать отчет с помощью Grafana.
Проверка безопасности очень похожа на мониторинг и аналитику. Вместо того, чтобы контролировать поведение приложения или бизнес-поведение, вы можете искать шаблоны мошенничества, спама или другого аномального поведения.
KSQL предоставляет простой, но проработанный метод определения шаблонов и запросов в онлайн потоке:
CREATE TABLE possible_fraud AS SELECT card_number, COUNT(*) FROM authorization_attempts
WINDOW TUMBLING (SIZE 5 SECONDS) GROUP BY card_number HAVING COUNT (*)>3;
Конечно, есть гораздо больше примеров использования KSQL, например, для мониторинга парка транспортных средств:
- «Нужно ли отправить грузовик на диагностику в ближайшие несколько дней?»
или для домашних IoT устройств:
- «Почему на 2-м этаже происходит всплеск температуры?”
или же для анализа обновлений в базе данных Oracle в режиме реального времени.
Источник: https://www.oreilly.com/ideas/big-fast-easy-data-with-ksql
Учебный Центр «Школа Больших Данных» предлагает 3х-дневный курс по «Администрированию Kafka кластера», который состоится 19 ноября.