26 января 2022 1670
Что, если бы у нас была возможность предоставить аналитикам уровень 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
Инженер-разработчик ПО

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

Как живые вебинары повышают эффективность ИТ-обучения

ИТ-рынок сегодня меняется стремительнее, чем когда-либо: появляются новые технологии, фреймворки и подходы.

Новости
06 октября 2025

ИИ в разработке ПО: преимущество или риск

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

Новости
24 сентября 2025

Чему нас учит ИИ: как стать идеальным сотрудником

Сейчас чаще говорят об этике использования ИИ — как не получить плагиат или не доверить слишком много, но при этом редко задумываются о другой стороне медали: этична ли наша работа?

Новости
12 сентября 2025

Как ИИ действительно влияет на продуктивность разработчика: неожиданные выводы из исследований

За последние пару лет у многих разработчиков в редакторах и IDE поселились новые «напарники» — всевозможные ИИ-инструменты. Обещания были впечатляющие: меньше рутины, быстрее релизы, код пишется почти сам. Но когда первые восторги улеглись и появились системные исследования, стало ясно: эффект от ИИ далеко не такой однозначный. Где-то он действительно ускоряет работу команд на 20%, а где-то, наоборот, тормозит опытных инженеров. И вот парадокс: даже там, где выигрыш в скорости очевиден, бизнес не всегда чувствует, что проекты двигаются быстрее.

Новости
08 сентября 2025

Сквозная логика: от бизнес-процесса к реализации без потерь

Главный принцип работы с проектной документацией — поддерживать её связность и актуальность. Любая, даже самая детальная схема (BPMN, Use Case, C4), мгновенно теряет ценность, если она конфликтует с другой. Узнаёте? Сначала все силы бросают на «личный кабинет», но после пары спринтов главным внезапно становятся «возвраты». В результате возникает опасный разрыв: цели проекта, реализуемый функционал и схемы, которые должны их описывать, живут своей жизнью. Документация превращается в «мёртвые зоны», которые больше не отражают реальность.

29 августа 2025

Заказная разработка ПО в IBS: безопасная разработка и доставка

В этой статье начальник отдела DevOps компании IBS Артур Галеев расскажет об опыте внедрения принципов безопасной разработки, используемых инструментах и нормативных актах, на которые стоит опираться.

Новости
26 августа 2025

Сертификация ИТ-специалистов: точная оценка ваших компетенций

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

Новости
22 августа 2025

Группа компаний IBS запускает национальную сертификацию для бизнес-аналитиков

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

Жизнь компании
20 августа 2025

От разработчика к тренеру: как превратить экспертизу в стабильный доход

Часто к преподаванию переходят после достижения «карьерного потолка»: на уровне сеньора процессы отлажены, и новые вызовы исчезают. Однако вместо того чтобы долго преподавать за символическую плату, можно сосредоточиться на создании системного заработка. Разберём реальные способы: от коучинга до запуска курсов.

Новости
13 августа 2025

Установка и настройка брокера сообщений Kafka на Windows

Цель задания: научиться устанавливать и настраивать Apache Kafka на операционной системе Windows, а также выполнять базовые операции с топиками и сообщениями.

21 июля 2025

Почему Python? Полный разбор Python vs Java в ML

«Когда 9 из 10 курсов по машинному обучению используют Python — это не случайность. Это результат десятилетия эволюции инструментов, сообщества и образовательной экосистемы».

21 июля 2025

Что должен знать и уметь архитектор ПО в 2025 году

Представьте профессию, в которой нужно одновременно мыслить как инженер, говорить как консультант и чувствовать бизнес как продакт. Архитектор ПО — это не просто старший разработчик с модным названием должности, а человек, который соединяет технологии, людей и цели в устойчивую, масштабируемую систему. Но какими навыками он должен владеть сегодня, чтобы быть действительно востребованным?

21 июля 2025

Памятка по документированию архитектурных решений

Отсутствие качественного архитектурного описания в сложных ИТ-проектах создает серьезные риски: фрагментированное понимание системы, накопление «архитектурного долга», трудности интеграции, масштабирования и онбординга. Это ведет к срывам сроков, перерасходу бюджета, снижению качества и росту затрат на поддержку, подвергая проект риску неоптимальных решений и критических уязвимостей.

Новости
18 июля 2025

Летняя акция: учитесь онлайн с выгодой, не выходя из отпуска! До конца августа второй курс со скидкой 50%

Проведите лето с пользой для карьеры – второй курс со скидкой 50%!

09 июля 2025

5 курсов июля со скидкой 30%

Друзья, у нас остались последние места на курсах, которые стартуют в июле. Сейчас есть возможность записаться на обучение со скидкой 30%!

Новости
04 июля 2025

Карьерный трек аналитика: от базы к экспертизе

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

27 июня 2025

Почему именно сейчас стоит учиться на бизнес-аналитика уровня Middle. «Руководство BABOK» в подарок участникам программы!

Вы в ИТ, вам за 30. Вроде бы всё хорошо — есть работа, скиллы, стабильность. Но в воздухе — тревожность. Проекты замораживаются. Бизнес урезает бюджеты. От ИТ ждут не просто задач, а конкретного влияния на прибыль.

25 июня 2025

Уничтожит ли ИИ-генератор кода профессию разработчика?

С появлением ИИ-инструментов, а также в связи недавним анонсом Canva Code, который генерирует код за пару кликов, многие задумались: не станут ли такие инструмент угрозой для разработчиков? Давайте разберемся, есть ли здесь реальные риски, или это все же преувеличения.

23 июня 2025

Проектное резюме консультанта 1С: карьерный инструмент, чтобы выделиться среди других кандидатов

Рассказываем о продвинутой альтернативе привычного резюме для консультантов 1C и других специалистов с проектной занятостью.

Новости
19 июня 2025

Выбор карьеры: Менеджер бизнес-процессов или Бизнес-аналитик уровня Middle?

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

Новости
18 июня 2025

Не нашли, что искали? — Просто напишите, и мы поможем

Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.