Как использовать и настраивать пользовательские сериализаторы в Kafka

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

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

Что такое пользовательские сериализаторы и как они используются в Kafka

Пользовательский сериализатор (user serializer) — это набор функций, который создается пользователем для выполнения сериализации (преобразование объекта в байтовый массив) необходимых ему объектов. Для того, чтобы создать пользовательский сериализатор, необходимо создать класс, который реализует (implements) интерфейс Serializer, требующий определение (или переопределение) методов configure() (для предварительной настройки, например проверка на наличие ключей или настройки отдельных ссылок), serialize() (для сериализации соответственно), который в качестве параметров принимает топик и данные для сериализации в этом топике, а также возвращает результат типа byte-массива и close() для закрытия потоков.

Big Data, Data Science, apache kafka для начинающих, apache kafka, курсы администраторов spark, apache kafka для начинающих, Big Data, Data Science, kafka streaming, Kafka, брокер kafka, avro
Структура пользовательского сериализатора в Kafka

Особенности создания пользовательского сериализатора в Kafka: несколько практических примеров

В качестве примера можно создать пользовательский сериализатор для созданного класса Customer, код для которого выглядит следующим образом [1]:

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;}
}

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

public class CustomerSerializer implements Serializer<Customer> {
@Override
public void configure(Map configs, boolean isKey) {
// в данном примере нет параметров для отдельной конфигурации
}
@Override
public byte[] serialize(String topic, Customer data) {
try {
byte[] serializedName;
int stringSize;
if (data == null)
return null;
else {
if (data.getName() != null) {
serializedName = data.getName().getBytes("UTF-8");
stringSize = serializedName.length;
} else {
serializedName = new byte[0];
stringSize = 0;}}
ByteBuffer buffer = ByteBuffer.allocate(4 + 4 + stringSize);
buffer.putInt(data.getID());
buffer.putInt(stringSize);
buffer.put(serializedName);
return buffer.array();
} catch (Exception e) {
throw new SerializationException("Error when serializing Customer to
byte[] " + e);
}}
@Override
public void close() {
// нечего закрывать, так как нет потоков
 }}

В вышерассмотренном фрагменте кода, видно, что для реализации метода serialize() используются такие элементы, как метод getBytes() (для преобразование строки в массив байтов) и класс byte[], который отвечает за формирование массива полученных байт.

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

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

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

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

Источники

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

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

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