KSQL

курсы администраторов, обучение kafka, курсы kafka, курсы администраторов, kafka для начинающих, курсы администрирования kafka, apache kafka примеры, курс kafka

KSQL — это платформа для потоковой обработки больших данных (Big Data) в Apache Kafka с помощью структурированных запросов на языке SQL (Structured Query Language). KSQL представляет собой целый движок, позволяющий обрабатывать и компилировать операции с Big Data (например, фильтрация, агрегация, оконные соединения) с использованием операторов языка SQL [1].

Что такое KSQL: архитектура и ее особенности

KSQL — это SQL-движок для обработки больших данных распределенного брокера Apache Kafka в многопоточном режиме (Stream Processing). Поддержка языка SQL позволяет избегать необходимости написания большого кода на Java, а также избавляет разработчика от потребности изучать огромное множество концепций работы с этим языком. Основу архитектуры KSQL составляют ее структуры данных. Структуры данных в KSQL — это программные единицы, которые хранят и обрабатывают множество данных, связанных логикой KSQL. Структуры данных в KSQL представлены в виде специальных коллекций данных, которые хранят данные в виде последовательности событий (events). Архитектура KSQL состоит из следующих коллекций:

  1. Потоки KSQL (KSQL Streams) — это неизменяемые коллекции, которые служат для изменения и добавления данных в топики (topic) брокера Kafka. Все данные потоков хранятся в виде структуры ключ-значение (key-value).
  2. Таблицы KSQL (KSQL Tables) — это изменяемые коллекции данных, которые отвечают за хранение данных в уже имеющихся топиках или создание новых Kafka-топиков. Таблицы KSQL по своей структуре схожи с таблицами в реляционных базах данных [1].
курсы администраторов, обучение kafka, курсы kafka, курсы администраторов, kafka для начинающих, курсы администрирования kafka, apache kafka примеры, курс kafka
Архитектура KSQL

Как появилась KSQL: краткая история

Разработка платформы KSQL началась в составе проекта Kafka в начале 2011 года. Изначально проект Kafka был разработан компанией Linkedin. 23 октября 2012 года состоялось включение Kafka в Apache Incubator (шлюз для идей, которые в будущем становятся полноценными проектами Apache Software Foundation). Первый выпуск проекта Kafka с входящей в него платформой KSQL состоялся 12 апреля 2014 года. В ноябре 2019 года компания Confluent объявила о выпуске KSQLDB (улучшенной версии KSQL), которая поддерживает pull-запросы и REST-интерфейсы. Последняя версия KSQL 2.7.0 (KSQLDB) была выпущена 19 декабря 2020 года [2].

Начало работы с KSQL

Как уже отмечалось выше, KSQL работает с двумя структурами данных: потоки и таблицы. Для того, чтобы создать поток, используется специальная SQL-конструкция CREATE STREAM [3]:

CREATE STREAM pageviews (
id BIGINT,
reg_num BIGINT,
user_id VARCHAR
) WITH (
KAFKA_TOPIC = 'employees',
VALUE_FORMAT = 'JSON'
);

Как видно из вышерассмотренного фрагмента кода, параметр KAFKA_TOPIC указывает на соответствующий топик в Apache Kafka, а параметр VALUE_FORMAT — на формат хранения значений потока (например, CSV, JSON, AVRO).

Создание таблиц в KSQL напоминает создание таблиц в реляционных базах данных. Для создания таблицы в KSQL необходимо использовать SQL-конструкцию CREATE TABLE. В KSQL также существует возможность одновременно создавать таблицу, которая регистрирует новый топик. Для того, чтобы сделать это, необходимо в скрипт добавить параметр PARTITIONS (отвечает за создание разделов в новом топике) и REPLICAS (создание реплик). Следующий фрагмент кода отвечает за создание таблицы для регистрации нового топика [3]:

CREATE TABLE users (
userid VARCHAR PRIMARY KEY,
registertime BIGINT,
gender VARCHAR,
regionid VARCHAR
) WITH (
KAFKA_TOPIC = 'users',
VALUE_FORMAT='JSON',
PARTITIONS=4,
REPLICAS=3
);

Таким образом, благодаря платформе KSQL, у Apache Kafka есть возможность обработки, создания и хранения потоков Big Data с помощью простых и понятных SQL-запросов. Это позволяет аналитикам и разработчикам активно использовать эту Big Data платформу потоковой обработки событий в задачах Data Science.

Записаться на курс

Смотреть раcписание

Источники

  1. https://habr.com/ru/company/glowbyte/blog/492944/
  2. https://ru.wikipedia.org/wiki/Apache_Kafka
  3. https://www.confluent.io/blog/intro-to-ksqldb-sql-database-streaming/

Поиск по сайту