Что такое десериализация и почему она так важна для Kafka

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

В прошлый раз мы говорили про получение записей по заданным смещениям в Kafka. Сегодня поговорим про механизм десериализации Big Data в брокере Apache Kafka. Читайте далее про десериализацию в Kafka, благодаря которой байтовый массив Kafka-записей может быть легко преобразован в Java-объекты для дальнейшей работы с ними.

Как работает десериализация для записей Kafka: особенности преобразования Big Data

Десериализация (deserialization) — это процесс создания структуры данных из битовой последовательности путем перевода этой последовательности в объекты и их упорядочивания (структуризации). Для десериализации данных используются десериализаторы. Десериализатор (deserializer) — это объект (или класс), который представляет собой набор функций и методов для десериализации данных. Брокер Kafka использует десериализаторы для преобразования записей в объекты Java [1].

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

Работа с десериализацией записей Kafka: несколько практических примеров

По умолчанию для десериализаций событий (например, подключение к серверу Kafka или регистрация нового потребителя) Kafka использует Java-десериализаторы StringDeserializer. Следующий код на языке Java отвечает за настройку брокеров Kafka:

Properties props = new Properties();
props.put("bootstrap.servers", "broker1:9092,broker2:9092");
props.put("group.id", "CountryCounter");
// используемый десериализатор
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

Однако стоит отметить, что StringSerializer можно использовать только в том случае, если наверняка известно, что все события представляют из себя набор строковых объектов. В противном случае существует риск получить ошибку типа SerializationException. Для того, чтобы этого избежать, можно пользоваться пользовательским десериализатором. В качестве примера можно рассмотреть пользовательский объект Customer, который представлен набором полей:

public class Customer {
private int customerID;
private String customerName;
public Customer(int ID, String name) {
this.customerID = ID;
this.customerName = name;
}
public int getID() {
return customerID;
}
public String getName() {
return customerName;
}
}

Для данного объекта можно написать пользовательский десериализатор, который представляет собой Java-класс, использующий интерфейс Deserializer. В этом классе необходимо переопределить метод deserialize()[1]:

import org.apache.kafka.common.errors.SerializationException;
import java.nio.ByteBuffer;
import java.util.Map;
public class CustomerDeserializer implements
Deserializer<Customer> {
@Override
public Customer deserialize(String topic, byte[] data) {
int id;
int nameSize;
String name;
try {
if (data == null)
return null;
// количество данных должно быть неменее 8 бит
if (data.length < 8)
throw new SerializationException("Size of data received by
IntegerDeserializer is shorter than expected");
// десериализация данных
ByteBuffer buffer = ByteBuffer.wrap(data);
id = buffer.getInt();
String nameSize = buffer.getInt();
byte[] nameBytes = new Array[Byte](nameSize);
buffer.get(nameBytes);
name = new String(nameBytes, 'UTF-8');
return new Customer(id, name);
} catch (Exception e) {
throw new SerializationException("Error when serializing
Customer
to byte[] " + e);} }

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

Освоить Apache Kafka на профессиональном уровне в качестве администратора Big Data кластеров, разработчика распределенных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

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

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

Источники

  1. Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных

Добавить комментарий

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