Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Сериализация (Serialization)
Сериализация — это процесс преобразования объекта в формат, пригодный для хранения или передачи по сети. В контексте Data Engineering это критически важный процесс.
Когда встречается
Я регулярно работаю с сериализацией в следующих сценариях:
- Message Queues (Kafka, RabbitMQ) — данные сериализуются перед отправкой в очередь
- Распределённые системы — сериализация данных для передачи между нодами
- Кэширование — сохранение объектов в Redis или Memcached
- Логирование и аудит — преобразование сложных объектов в читаемый формат
Основные форматы
JSON
import json
data = {"user_id": 123, "name": "Alice", "tags": ["engineer", "python"]}
serialized = json.dumps(data) # строка
deserialized = json.loads(serialized) # объект
Pickle (Python-специфичный)
import pickle
data = {"user": "Bob", "scores": [85, 90, 88]}
serialized = pickle.dumps(data) # байты
deserialized = pickle.loads(serialized)
Protocol Buffers
# .proto файл
message User {
int32 id = 1;
string name = 2;
repeated string tags = 3;
}
В контексте больших данных
Apache Avro и Protocol Buffers — стандарты в Data Engineering:
- Схема-ориентированные — гарантируют совместимость версий
- Компактные — меньше размер данных по сравнению с JSON
- Быстрые — оптимизированы для высокопроизводительных систем
Практический пример с Kafka
from kafka import KafkaProducer, KafkaConsumer
import json
producer = KafkaProducer(
bootstrap_servers=[localhost:9092],
value_serializer=lambda v: json.dumps(v).encode(utf-8)
)
data = {"event": "user_login", "timestamp": "2026-03-26"}
producer.send(events, value=data)
consumer = KafkaConsumer(
events,
bootstrap_servers=[localhost:9092],
value_deserializer=lambda m: json.loads(m.decode(utf-8))
)
for msg in consumer:
print(msg.value) # десериализованный объект
Ключевые вызовы
- Версионирование — при изменении схемы может быть несовместимость
- Производительность — сериализация занимает CPU
- Размер — JSON больше, чем Avro
- Языковая зависимость — Pickle работает только в Python
На практике я выбираю формат в зависимости от требований: JSON для простоты и читаемости, Avro для производительности и совместимости версий.