В прошлый раз мы говорили про события в брокере Kafka. Сегодня поговорим про потоки в распределенном брокере Apache Kafka. Читайте далее про особенности и способы создания потоков в распределенной среде Kafka.
Для чего нужны потоки в Kafka и как они работают
Потоки в Kafka — это неизменяемые коллекции данных, которые предназначены для добавления данных в топики Kafka. Kafka-потоки также являются потоками фактов, где каждый факт представляет собой уникальное и неизменяемое событие (event). Данные потоков хранятся в виде структуры ключ-значение (key-value). Создавать Kafka-потоки можно двумя способами:
- с помощью библиотеки Kafka Streams;
- с помощью платформы KSQL.
Каждый из этих способов мы подробно рассмотрим далее на практических примерах.
Особенности создания потоков в Kafka: несколько практических примеров
Один из способов создания потоков в Kafka является использование инструментов библиотеки Kafka Streams. Kafka Streams — это клиентская библиотека Apache Kafka, позволяющая создавать приложения и микросервисы с потоковой обработкой, которые хранятся в Kafka-кластере. Для того, чтобы создавать потоки посредством Kafka Streams, используется класс KStreamBuilder
. Следующий код на языке Java отвечает за создание потока с помощью Kafka Streams [1]:
KStreamBuilder builder = new KStreamBuilder(); KStream<String, String> textLines = builder.stream(inputTopic); Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE__CHARACTER__CLASS);
Как видно из вышеприведенного примера, метод stream()
принимает в качестве параметра название темы и запускает поток. Потоки также можно создавать через платформу KSQL. KSQL — это платформа для потоковой обработки больших данных в брокере Kafka с помощью структурированных SQL-запросов. Структуры данных в KSQL — это программные единицы, которые способны хранить и обрабатывать множество данных, связанных логикой KSQL. В KSQL структуры данных представлены в виде специальных коллекций, которые отвечают за хранение и создание последовательности событий (events). Следующий код на диалекте KSQL отвечает за создание потока и сохранение его в формате JSON (JavaScript Object Notation) [1]:
CREATE STREAM pageviews ( page_id BIGINT, viewtime BIGINT, user_id VARCHAR ) WITH ( KAFKA_TOPIC = 'keyless-pageviews-topic', VALUE_FORMAT = 'JSON' );
Как видно из кода, структура создания потока очень напоминает создание обычной SQL-таблицы с указанием данных и их типов. Параметр KAFKA_TOPIC
указывает на соответствующий топик в брокере Kafka. Параметр VALUE_FORMAT
указывает на формат хранения значений потока (например, CSV, JSON, AVRO). Значения потока могут иметь значение NULL
, а также один общий ключ (очень распространено в JSON-формате).
Таким образом, благодаря потокам, брокер Kafka гарантирует высокую скорость обработки данных благодаря их распараллеливанию, что делает Apache Kafka полезным средством для каждого специалиста в области анализа и обработки больших данных, от Data Scientist’а до разработчика распределенных приложений.
Apache Kafka для инженеров данных
Код курса
DEVKI
Ближайшая дата курса
3 марта, 2025
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.
Освоить Apache Kafka на профессиональном уровне в качестве администратора Big Data кластеров, разработчика распределенных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
- Администрирование кластера Kafka
- Apache Kafka для разработчиков
- Администрирование кластера Arenadata Streaming Kafka
Источники
- Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных