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

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

Станьте архитектором ПО с выгодой! Только в апреле сэкономьте 20 000 ₽ и получите новый модуль по микросервисам в подарок

24 апреля стартует обучение на комплексной программе «Архитектор ПО. Путь к мастерству в проектировании систем»*.

14 апреля 2025

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

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

Новости
10 апреля 2025

Кейс: Интенсив по управлению проектами для промышленной компании

Мы адаптировали курс по управлению проектами под запрос команды крупной промышленной компании и провели обучение. Вот что из этого вышло.

27 марта 2025

Кейс: Обучение сотрудников крупной компании работе с ClickHouse

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

19 марта 2025

Платформа сертификации IBS получила аккредитацию АПКИТ

Ассоциация предприятий компьютерных и информационных технологий (АПКИТ) приняла новый регламент сертификации ИТ-специалистов.

Новости
10 марта 2025

Специальные акции на учебные программы

У нас отличная новость для всех, кто стремится развивать свои навыки в мире ИТ.

06 марта 2025

Как остановить спам-атаку

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

06 марта 2025

Учебный центр IBS подписал партнерское соглашение с ООО «РусБИТех-Астра», разработчиком российской операционной системы Astra Linux.

Теперь мы можем проводить авторизованное обучение по работе с Astra Linux для специалистов в области информационной безопасности.

17 февраля 2025

Двойная выгода: покупай один курс — получай второй за 50% стоимости!

Воспользуйтесь возможностью изучить более глубокие аспекты одной области — например, при покупке курса по Java, архитектуре ПО, управлению проектами, системному и бизнес-анализу, тестированию ПО и Big Data вы можете получить второй курс этой же тематики за полцены! Не упустите шанс развить свои навыки и поднять свою карьеру на новый уровень. 

29 января 2025

Сертификация преподавателя Java-разработки для крупного провайдера ИТ-обучения

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

Новости
21 января 2025

Системный аналитик 100 lvl — дорожная карта развития

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

23 декабря 2024

Платформа сертификации IBS признана лучшим digital-решением для корпоративного обучения

Центр сертификации IBS стал обладателем Гран-при премии «Смарт пирамида» — одной из самых престижных российских премий за достижения в области обучения и развития человеческого капитала.

20 декабря 2024

Учебный центр IBS получил сертификат ГОСТ Р ИСО 9001-2015

В октябре 2024 года Учебный центр IBS получил сертификат соответствия ГОСТ Р ИСО 9001-2015. Это важное достижение подтверждает, что мы придерживаемся высоких стандартов качества и результативно управляем образовательными процессами организации.

19 декабря 2024

9 курсов со скидкой до 50%

Друзья, в январе стартует 9 курсов, обучение на которых можно купить со скидкой до 50%*! 

15 декабря 2024

8 заблуждений про тестирование

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

15 декабря 2024

Путь к Fullstack-тестировщику: что нужно знать о ручном и автоматизированном тестировании?

Тестирование программного обеспечения — одна из самых востребованных областей в IT. И часто новички и даже опытные специалисты, желающие строить свою карьеру в этом направлении, часто сталкиваются с вопросом: какое тестирование выбрать — ручное, автоматизированное или Fullstack? У каждого из этих направлений свои особенности, преимущества и требования к знаниям. В этой статье рассмотрим каждое из направлений, их плюсы и минусы, области применения и навыки, необходимые для успеха.

15 декабря 2024

Совет по развитию сертификации ИТ-специалистов при АПКИТ аккредитовал «Платформу сертификации IBS»

Директор департамента обучения и развития IBS Владимир Гернер участвовал в заседании Совета по сертификации ИТ-специалистов при АПКИТ.

Новости Жизнь компании
08 октября 2024

Java-сертификация: IBS в сравнении с Oracle

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

Новости
04 октября 2024

Исследование IBS: число новых ИТ-решений в реестре ПО выросло в 2023 году более чем на треть

Анализируем ситуацию на рынке российского ПО.

Жизнь компании
01 октября 2024

6 суперспособностей Fullstack-тестировщиков, которые напоминают навыки животных

Читайте о скиллах, которые делают тестировщиков востребованными на рынке труда.

27 сентября 2024

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

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