26 января 2022 2066
Что, если бы у нас была возможность предоставить аналитикам уровень SQL поверх Kafka Streams при потоковой обработке данных?
Как выполнять запросы при потоковой обработке данных Kafka?
В одном из наших проектов мы столкнулись с ситуацией, когда команде аналитиков было необходимо работать с потоками данных, но у них не было навыков программирования. Однако они умели работать с SQL-запросами. Было бы хорошо предоставить этим аналитикам уровень SQL поверх Kafka Streams.

KSQL — это движок SQL для Kаfkа, который обеспечивает интерактивный SQL интерфейс, позволяющий писать запросы для потоковой обработки вместо написания большого количества кода. KSQL особенно хорошо подходит для выявления мошенничества и приложений, работающих в режиме реального времени.

KSQL обеспечивает масштабирование, поддерживает распределенные операции обработки потоков, включая агрегации, соединения, оконные операции и т. д. Кроме того, в отличие от SQL, где происходит обращение к базе данных или системе пакетной обработки, результаты запросов в KSQL получаются непрерывно. Прежде чем перейти к написанию потоковых запросов, кратко рассмотрим основные понятия KSQL.


Потоки и таблицы KSQL


Поток событий — это неограниченный поток отдельных независимых друг от друга событий, а поток обновлений или записей — это поток обновлений предыдущих записей с одним и тем же ключом.

KSQL основывается на аналогичной концепции запросов из Потока или Таблицы. Если Поток представляет собой бесконечный ряд событий или фактов, которые не изменяются, то в Таблице с помощью запроса можно обновлять факты или даже удалять их.

Терминология может различаться, однако основные понятия практически одинаковы, и если вы знакомы с Kаfkа Streаms, то будете уверенно чувствовать себя и с KSQL.


Архитектура KSQL


KSQL использует Kаfkа Streаms для построения и получения результатов запроса. KSQL состоит из двух компонентов — KSQL СLI и сервера KSQL. Используются стандартные инструменты SQL, такие как MySql, Оrасle, и даже Hive можно использовать с СLI при написании запросов в KSQL. Лучшая из всех версий KSQL — это версия с открытым кодом (лицензированная версия Арасhe 2.0).

СLI также является клиентом, который подключается к серверу KSQL. Сервер KSQL обеспечивает обработку запросов и получение данных из Kаfkа, а также запись результатов в Kаfkа.

KSQL работает в двух режимах: в автономном режиме, который используется для протипирования, и режиме разработки или распределенном режиме, который используется с KSQL при работе в среде с реальным объемом данных.

Несмотря на то, что KSQL на момент написания этой статьи является прекрасным инструментом и отлично работает для потоковой обработки данных в SQL, KSQL следует рассматривать как средство предварительного просмотра для разработчиков, которое не предназначено для работы с производственными кластерами.

Листинг 1. Запуск KSQL в локальном режиме

./bin/ksql-cli local

После ввода этой команды вы увидите в консоли примерно следующее:

1.png


Создание KSQL Streаm


Вы возвращаетесь к работе в BSE и к вам приходит один из аналитиков, которого заинтересовало одно из написанных вами приложений, и он хотел бы внести в него некоторые изменения. Однако теперь, вместо того чтобы делать дополнительную работу, вы запускаете консоль KSQL и предоставляете аналитику возможность доработать ваше приложение как инструкцию SQL.

Пример, который нужно преобразовать, — это последний оконный поток и пример интерактивных запросов в

srс/mаin/jаvа/bbejeсk/сhарter_9/StосkРerfоrmаnсeInterасtiveQueryАррliсаtiоn.jаvа frоm lines 96–103.

В этом приложении вы отслеживаете число проданных акций каждые десять секунд с помощью биржевого кода компании.

Вы уже определили топик (топик отображается в таблице базы данных) и объект модели StосkTrаnsасtiоn (биржевая сделка), где поля на объекте отображаются в столбцах таблицы. Хотя топик уже определен, нам необходимо зарегистрировать эту информацию в KSQL, используя оператор СREАTE STREАM:

Листинг 2. Создание Streаm fоund

2.png

1. Оператор CREATE STREAM с именем stock_txn_stream
2. Регистрация полей объекта StockTransaction как столбцов
3. Указание формата данных и топика Kafka, который служит источником потока (это необходимые параметры)

С помощью этого оператора вы создаете экземпляр KSQL Streаm, которому теперь можно направлять запросы. В спецификаторе контекста (WITH сlаuse) вы увидите два требуемых параметра: параметр VАLUE_FОRMАT, который указывает KSQL формат данных, и параметр KАFKА_TОРIС, который указывает KSQL откуда брать данные.

Есть еще два дополнительных параметра, которые можно использовать в спецификаторе контекста при создании потока. Первый — это параметр TIMESTАMР, который связывает метку времени сообщения со столбцом в KSQL Streаm. Для операций, требующих метки времени, таких как оконные операции, этот столбец используется для обработки записи.

Второй — это параметр KEY, который связывает ключ сообщения со столбцом в определенном потоке. В нашем случае ключ сообщения для топика биржевых транзакций соответствует символу поля в значении JSОN, и нам не нужно указывать ключ.

Но если бы это было не так, то вам было бы нужно отобразить ключ на именованный столбец, поскольку ключ всегда необходим для выполнения операций группировки, как мы увидим, когда будем выполнять поток SQL в следующем разделе.
С помощью KSQL команда перечисляет топики; вы увидите список топиков на брокере, на который указывает KSQL СLI, а также узнаете, «зарегистрированы» ли топики или нет.

После создания нового потока вы можете просматривать все потоки и проверять, что KSQL создал новый поток, с помощью следующих команд:

Листинг 3. Перечисление всех потоков и описания только что созданного потока

show streams;
describestock_txn_stream;

Выполнение этих команд дает результаты, показанные на рисунке 4:

3.png

Вы увидите два дополнительных столбца RОWTIME и RОWKEY, вставленные KSQL. Столбец RОWTIME содержит метку времени, указанную в сообщении (от продюсера или брокера), RОWKEY — это ключ сообщения (если он есть). Теперь после создания потока мы может запустить запрос на этом потоке. Оригинал статьи можно найти здесь.


Хотите улучшить свои навыки? Приглашаем на наши тренинги !


Siddharth Garg
Инженер-разработчик ПО

Последние статьи в блоге

ИИ-агенты в ERP-системах: каковы глобальные тренды и каким путем идет Россия

Ведущие ERP-вендоры переводят ИИ в режим автономных операций. В России этот сценарий пока не реализуется: западные вендоры ушли, облачные ИИ-релизы недоступны, регуляторы требуют переходить на суверенный контур и локальные LLM. О развитии рынка и стратегиях для бизнеса — в материале IT-World.

Новости
11 августа 2026

Саммари вебинара «ИИ-инструменты в работе архитектора ПО»

Дмитрий Овчаренко, технический директор с 15-летним опытом в архитектуре ПО, на сквозном примере стартапа — платформы для кондитеров — показал, как ИИ помогает архитектору ускорить работу на всех этапах: от чистого листа до готовых артефактов для команды.

Новости
07 августа 2026

Контроль качества ИИ-систем: от теории к практике

На результаты внедрения искусственного интеллекта в компаниях влияет сложный комплекс факторов. Для получения эффективного решения необходим контроль его качества и устранение узких мест на протяжении всей работы над проектом. О том, как этого добиться, рассказали заместитель директора центра перспективных разработок IBS Денис Воденеев и старший аналитик группы Data Science IBS Илья Гайдуков.

Новости
05 августа 2026

Саммари вебинара «Искусственный интеллект для бизнес-аналитика. Автоматизация для усиления экспертизы»

Максим Охманюк, эксперт с 25-летним опытом в IT, бизнес-анализе и управлении проектами, разобрал, как ИИ становится инструментом усиления аналитика, а не его заменой.

Новости
31 июля 2026

Как мы проектировали систему оценки ИТ-персонала для федерального ритейлера

В Учебном центре IBS мы разрабатываем методологию оценки персонала под задачи конкретного клиента. В крупной федеральной розничной сети с десятками ИТ-ролей и разрозненными критериями уровней специалистов это потребовало создания единой системы с нуля. Рассказываем, как это было.

28 июля 2026

Будущее разработки ПО: от кода к оркестрации агентов

Мультимодальные интерфейсы, внедрение ИИ-инструментов, новые подходы к анализу данных и принятию решений в компаниях уже активно меняют процесс разработки программного обеспечения. О том, как может эволюционировать создание ПО в недалеком будущем, рассказал Максим Ковтун, управляющий партнер «Разработка и тестирование» IBS.

Новости
23 июля 2026

IBS запускает независимую сертификацию для тестировщиков ПО

Центр сертификации IBS инициировал новую программу независимой оценки квалификации для тестировщиков программного обеспечения. Сертификация IBS позволяет ИТ-специалистам систематизировать знания, подтвердить соответствие единому стандарту качества и повысить конкурентоспособность на рынке труда.

21 июля 2026

Внедрение BI-систем: почему проект может не дать результатов

Реализация системы бизнес-аналитики (BI) может пройти технически гладко, но не принести ожидаемого эффекта компании. Причина обычно не в самой платформе, а в организации работы над проектом. Начальник отдела витрин данных и аналитики IBS Анна Филиппова поделилась взглядом на то, почему возникают такие ситуации и как их избежать.

17 июля 2026

Саммари вебинара «Проектирование высоконагруженной системы на примере агрегатора авиабилетов»

Алексей Додонов, эксперт с 20-летним опытом в ИТ, на сквозном кейсе разобрал эволюцию архитектуры стартапа по продаже авиабилетов — от монолита до распределённой системы, и как команда решала проблемы производительности на каждом этапе.

16 июля 2026

Бесплатный вебинар «Результативный ИИ в бизнесе: как внедрять безопасно, измеримо и с реальной пользой»

Искусственный интеллект — это уже не просто тренд, а рабочий инструмент. Но как перейти от пилотов и экспериментов к системному процессу с понятными метриками и управляемыми рисками?

Новости
03 июля 2026

ИИ в бизнесе: почему экономия на зарплате не всегда равна прибыли

Внедрение ИИ в корпоративную среду стало рутинной задачей для многих ИТ-директоров и руководителей проектов. Однако первые волны оптимизма уже столкнулись с суровой реальностью.

Жизнь компании
18 июня 2026

Саммари вебинара «Техсобес на Java: как системный подход и работа с ИИ превращают стресс в оффер»

Владимир Низов, технический директор с 10-летним стажем и эксперт Учебного центра IBS, рассказал, почему кандидаты проваливают технические интервью и как этого избежать. Отдельно разобрал работу с ИИ. Главное: заучивать тысячи страниц не нужно. Достаточно освоить индексный подход и единый паттерн системного дизайна. А ИИ воспринимать как инструмент с чёткими ограничениями.

Новости
09 июня 2026

Опыт развертывания корпоративной/ведомственной ИИ-инфраструктуры

Разговор о проблемах развертывания ИИ-инфраструктуры часто ведется на макроуровне: дефицит вычислительных мощностей, стоимость ускорителей, зависимость от внешних поставщиков, регуляторные ограничения. Все это важно, но если посмотреть на ситуацию глазами специалиста, которому предстоит решить эту задачу, вопрос становится более прикладным: как развернуть корпоративную ИИ-инфраструктуру, чтобы она не превратилась в дорогой, трудноуправляемый и слабо загруженный набор серверов?

Новости
02 июня 2026

«Аниматор с провалами памяти»: 6 ограничений ИИ, которые не дают вам писать качественный код

Вы когда-нибудь просили ИИ написать метод на Spring Boot, получали красивый, идеально отформатированный код, а он не работал? Потом вы копали глубже и находили, что нейросеть использовала RestTemplate вместо WebClient, забыла про @Transactional, а в методе с @PreUpdate пыталась изменить данные, которые уже ушли в SQL. И вы думали: «Ну, нейросеть же глупая». Нет. Не глупая. Она просто пишет код не как человек.

Новости
28 мая 2026

Роль и место России в мировой гонке в сфере ИИ

По масштабу амбиций и геополитическому значению гонку в сфере искусственного интеллекта все чаще сравнивают с космической гонкой эпохи холодной войны. Соревнование разворачивается одновременно по нескольким осям: вычислительные мощности, данные, кадры, модели и регулирование. В настоящее время ни одну из мировых держав нельзя назвать ведущей по всем направлениям, что оставляет возможность для разных подходов и стратегий в достижении лидерства. О положении России в этом глобальном соревновании, ее стратегических целях, инфраструктурных ограничениях и потенциале для развития рассказывает Денис Воденеев, заместитель директора центра перспективных разработок IBS.

Новости
21 мая 2026

Систематизация ИИ-компетенций: курсы под роли, карты эффективности и модули в комплексных программах

Учебный центр IBS систематизировал подход к развитию навыков работы с искусственным интеллектом. Хаотичное использование нейросетей, как показала практика, не даёт измеримого эффекта. Новое направление построено так, чтобы ИИ решал конкретные бизнес-задачи, а не просто ускорял рутину.

Новости
18 мая 2026

Как защитить бизнес и данные при внедрении ИИ

Искусственный интеллект способен резко расширить возможности развития бизнеса, однако просчеты при внедрении подобных систем могут обернуться серьезными убытками.

Новости
13 мая 2026

Искусственный архитектор: как нейросети справляются с проектированием ПО

В этой статье расскажем про большие языковые модели в приложении к работе архитектора ПО. Вместе мы посмотрим, насколько хорошо GPT понимает ИТ-архитектуру и сможет ли уже сегодня заменить архитектора. Пора разобраться, насколько глубоко ИИ может встроиться в рабочие процессы архитектора ПО — и стоит ли ему там оставаться.

Новости
24 апреля 2026

Бабушка с долгом в полмиллиона, однопоточное ядро и другие грабли: как не повторить чужие архитектурные ошибки

Любая система рано или поздно проверяется на прочность: нагрузкой, ростом бизнеса или человеческим фактором. Именно в эти моменты всплывают решения, которые казались безобидными на старте. Ниже — реальные кейсы из практики, где небольшие архитектурные допущения со временем превращались в ощутимые проблемы. Разберем, какие сигналы можно было заметить сразу и что стоит учитывать, чтобы не повторить эти сценарии в своих проектах.

Новости
16 апреля 2026

Как защитить информацию в приложениях, использующих ИИ

Представим, что системы контроля и анализа транзакций в банке начинают игнорировать 30% мошеннических операций. Система управления энергосетью выводит из строя ключевой узел подачи электроэнергии в город. Чат-бот службы поддержки начинает массово раскрывать персональные данные клиентов. К сожалению, это новая реальность, с которой может столкнуться любая компания, интегрирующая ИИ-системы в бизнеспроцессы.

Новости
08 апреля 2026

Нужна помощь? Оставьте заявку, и мы свяжемся с вами в ближайшее время

Согласен получать на e-mail информационные рассылки о новостях Учебного центра IBS
Корпоративное обучение Бесплатные семинары Оценка персонала Сертификация О нас Стать тренером Блог Личный кабинет
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.