Курс на Stepik
Обложка курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» на Stepik
Бесплатно

Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера ★ 0.000

Открыть на
STEPIK.ORG

CSV, JSON, Parquet и Avro для дата-инженера: байты и кодировки, схемы, сжатие, Arrow, эволюция, S3, качество, безопасность и production-пайплайн.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Учеников на курсе 29
Сертификаты, выданные на курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Сертификатов выдано 0
Отзывы о курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Отзывов получено 0
Рейтинг курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Рейтинг курса 0.000
Уроки в курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Количество уроков 156
Тесты в курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Количество квизов 675
Время прохождения курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Время прохождения курса —
Обновления курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Обновления курса — —
Дата публикации курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Дата публикации курса — ———
Последнее обновление курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» 26 разделов Уроки в курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» 156 уроков Тесты в курсе «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» 675 тестов Время прохождения курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» 6 ч. Последнее обновление курса «Работа с файлами CSV, JSON, Parquet и Avro для дата-инженера» обн. 19 июля 2026

Модуль 1. Фундамент: файлы, байты и кодировки

6 уроков
1. Почему дата-инженеру нужно знать устройство файлов ↗
2. Файл как объект файловой системы: пути и pathlib ↗
3. bytes и str: два мира представления данных ↗
4. Unicode и UTF-8: как символы становятся байтами ↗
5. BOM и переводы строк: невидимые символы, которые ломают парсинг ↗
6. Файловый дескриптор и буферизация: когда данные попадают на диск ↗

Модуль 2. Текстовый ввод-вывод под микроскопом

5 уроков
1. Контекстный менеджер with и гарантия закрытия файла ↗
2. Построчное чтение и экономия памяти ↗
3. seek и tell: произвольный доступ к позиции в файле ↗
4. Генераторы для файлов и ленивое чтение ↗
5. Временные файлы и атомарная запись ↗

Модуль 3. Контрольные суммы и целостность данных

4 урока
1. Зачем дата-инженеру контрольные суммы ↗
2. MD5, SHA-256 и другие алгоритмы хеширования ↗
3. Потоковое хеширование больших файлов ↗
4. Проверка целостности файла на практике ↗

Модуль 4. Сжатие и архивация

5 уроков
1. Внешнее сжатие gzip: открытие и чтение прозрачно ↗
2. bz2, lzma и zstd: сравнение алгоритмов сжатия ↗
3. Потоковое сжатие: запись со сжатием на лету ↗
4. Внутреннее сжатие в Parquet и Avro: введение ↗
5. Выбор алгоритма сжатия: скорость против степени ↗

Модуль 5. CSV: формат-невидимка

10 уроков
1. CSV — формат, который все знают, но никто не читал RFC 4180 ↗
2. Модуль csv в Python: reader и writer ↗
3. CSV-диалекты: разделители, кавычки и как их менять ↗
4. Перенос строки внутри CSV-поля и escaping кавычек ↗
5. DictReader и DictWriter: работа с заголовками ↗
6. Кодировки и BOM в CSV: как не потерять данные ↗
7. Schema inference в CSV: распознавание типов колонок ↗
8. Частичное чтение больших CSV: chunksize и пропуски ↗
9. Повреждённые строки и изменение числа колонок ↗
10. CSV injection и другие угрозы безопасности ↗

Модуль 6. JSON: текстовый формат обмена

8 уроков
1. JSON: грамматика RFC 8259 — объекты, массивы и скалярные… ↗
2. JSON в Python: loads, dumps и их параметры ↗
3. Числа в JSON: потеря точности и как её избежать ↗
4. null, отсутствующее поле и escaping в JSON ↗
5. Дубликаты ключей и порядок полей в JSON ↗
6. Даты и время в JSON: нет стандарта, но есть практики ↗
7. Глубоко вложенный JSON и как с ним работать ↗
8. Ошибки парсинга: malformed JSON и глубина вложенности ↗

Модуль 7. NDJSON и потоковый JSON

7 уроков
1. NDJSON и JSON Lines: одна строка — один объект ↗
2. Инкрементальный парсинг больших JSON через ijson ↗
3. Flattening вложенных JSON-структур ↗
4. Потоковое чтение NDJSON построчно ↗
5. JSON Schema: описание ожиданий о структуре данных ↗
6. Валидация JSON с помощью Pydantic и JSON Schema ↗
7. Потоковая запись NDJSON и частичные данные ↗

Модуль 8. CSV и JSON в production: schema-on-read

6 уроков
1. Schema-on-read и schema-on-write: два подхода к данным ↗
2. Явная схема для CSV и JSON через Pydantic ↗
3. Валидация на входе: reject, quarantine и dead-letter ↗
4. Правильные типы в CSV и JSON: decimal, datetime, enum ↗
5. CSV/JSON: pandas против Polars против DuckDB ↗
6. Schema inference в библиотеках: когда верить, а когда нет ↗

Модуль 9. Мост к бинарным форматам: columnar storage

4 урока
1. От текстовых форматов к бинарным: зачем переходить ↗
2. Эксперимент: CSV против Parquet — размер, скорость, фильтрация ↗
3. Row-oriented против column-oriented: аналитика против транзакций ↗
4. Apache Arrow: общий слой между форматами и библиотеками ↗

Модуль 10. Parquet: устройство изнутри

8 уроков
1. Parquet-файл: от magic bytes до футера ↗
2. Схема и метаданные в Parquet: читаем через PyArrow ↗
3. Pages и encodings: как байты превращаются в значения ↗
4. Dictionary encoding и RLE: как Parquet сжимает колонки ↗
5. Definition и repetition levels: вложенные структуры в Parquet ↗
6. Statistics: min/max и null_count — предикатный пушдаун ↗
7. Page index и bloom filter: дополнительные индексы ↗
8. Row groups и column chunks: как Parquet режет данные ↗

Модуль 11. Parquet: чтение и запись

8 уроков
1. Запись Parquet через PyArrow: от простого к сложному ↗
2. Чтение Parquet: проекция колонок и предикатный пушдаун ↗
3. Pandas и Parquet: PyArrow backend против стандартного ↗
4. Polars scan_parquet: ленивое чтение и векторизация ↗
5. DuckDB SELECT FROM parquet: SQL над файлами ↗
6. Timestamps и временные зоны в Parquet ↗
7. Decimal в Parquet: точность без компромиссов ↗
8. null и nested в Parquet: PyArrow vs Pandas vs Polars ↗

Модуль 12. Parquet в production

7 уроков
1. Размер row group и page: как настроить под нагрузку ↗
2. Compression codecs в Parquet: snappy, gzip, zstd, lz4 ↗
3. Партиционированные датасеты в Parquet: Hive-style partitioning ↗
4. Проблема маленьких файлов и compaction ↗
5. Модульное шифрование в Parquet ↗
6. Повреждённый Parquet footer и диагностика ↗
7. Parquet: совместимость между Python, Spark, Trino и Flink ↗

Модуль 13. Avro: схема прежде данных

6 уроков
1. Avro: почему схема прежде, чем байты ↗
2. Primitive и complex типы в Avro-схеме ↗
3. Records, enums, arrays, maps и unions ↗
4. Logical types в Avro: decimal, uuid, timestamp ↗
5. Бинарное кодирование Avro: zigzag и variable-length integers ↗
6. Запись Avro через fastavro: первый файл ↗

Модуль 14. Avro Object Container File

6 уроков
1. Структура Avro OCF: magic, header и sync marker ↗
2. Блоки данных и codecs в Avro OCF ↗
3. Чтение Avro OCF: fastavro и официальный avro ↗
4. Потоковая запись больших Avro-файлов ↗
5. Single-object encoding: Avro без контейнера ↗
6. Splitability Avro OCF: sync marker и восстановление ↗

Модуль 15. Avro: эволюция схем

7 уроков
1. Writer schema и reader schema: кто главный ↗
2. Schema resolution: правила сопоставления полей ↗
3. Backward, forward и full compatibility ↗
4. Значения по умолчанию и aliases в Avro ↗
5. Добавление и удаление полей без поломки читателей ↗
6. Schema fingerprint и тестирование совместимости ↗
7. Типичные ошибки эволюции схем и как их не допустить ↗

Модуль 16. Avro в production и Kafka

6 уроков
1. Schema Registry: зачем и как работает ↗
2. Confluent wire format: magic byte + schema ID + Avro binary ↗
3. Avro OCF против сообщения в Kafka ↗
4. fastavro и Schema Registry вместе ↗
5. Совместимость схем: producer и consumer ↗
6. Несовместимость схем в рантайме: что делать ↗

Модуль 17. Конвертация между форматами

5 уроков
1. Конвертация CSV в Parquet без потери типов ↗
2. Конвертация JSON в Avro с вложенными структурами ↗
3. Parquet в CSV и обратно: подводные камни ↗
4. Cross-format сравнение с DuckDB ↗
5. Сквозной конвейер: CSV и NDJSON → Parquet и Avro ↗

Модуль 18. Выбор формата под задачу

6 уроков
1. Матрица сравнения: CSV, JSON, Parquet, Avro ↗
2. Row-oriented против column-oriented: выбираем под нагрузку ↗
3. Schema-on-read против schema-on-write: когда что лучше ↗
4. Открытая против закрытой схемы: data contracts ↗
5. Когда каждый формат оптимален: на примерах ↗
6. Антипримеры: когда формат категорически не подходит ↗

Модуль 19. Надёжный файловый обмен

7 уроков
1. Атомарная запись файла: tmp + rename и fsync ↗
2. Partial files: неполная загрузка и обрыв соединения ↗
3. Идемпотентность: дедупликация и повторные запуски ↗
4. Exactly-once: миф и реальность на уровне файлов ↗
5. Commit-маркеры: _SUCCESS и манифесты ↗
6. Восстановление после сбоя: грязное чтение и докачка ↗
7. Checksums для каждого файла в пайплайне ↗

Модуль 20. S3 и object storage

5 уроков
1. Файл в S3 — это не POSIX-файл ↗
2. Multipart upload в S3: большие файлы по частям ↗
3. Partial objects и consistency в S3 ↗
4. MinIO: локальная S3-среда для разработки ↗
5. Атомарность на S3: трюки и ограничения ↗

Модуль 21. Качество данных и observability

5 уроков
1. Data contracts: соглашение о схеме и качестве данных ↗
2. Schema validation на входе пайплайна ↗
3. Статистики качества данных и их мониторинг ↗
4. SLI/SLO и алертинг для файловых пайплайнов ↗
5. Логирование, метрики и трейсинг обработки файлов ↗

Модуль 22. Безопасность данных

4 урока
1. PII в файлах: маскирование и псевдонимизация ↗
2. Шифрование at rest: Parquet modular encryption ↗
3. Шифрование in transit: TLS и управление ключами ↗
4. Аудит доступа и retention: удаление данных ↗

Модуль 23. Диагностика и восстановление

4 урока
1. Повреждённый Parquet footer и его восстановление ↗
2. Битые блоки Avro OCF и sync marker ↗
3. Обрезанный CSV и JSON: как спасти данные ↗
4. Quarantine и dead-letter: стратегия восстановления ↗

Модуль 24. Партиционирование и Data Lake

6 уроков
1. Hive partitioning против Iceberg partitioning ↗
2. Партиционирование по времени, категориям и хешу ↗
3. Compaction: из маленьких файлов в большие row groups ↗
4. Iceberg, Delta Lake, Hudi: табличные форматы ↗
5. Parquet — не таблица: когда пора переходить на табличный формат ↗
6. Миграция с файлов на табличные форматы ↗

Модуль 25. Production-пайплайн: end-to-end

7 уроков
1. Постановка итогового проекта: интернет-магазин «ТехноЛавка» ↗
2. Слои данных: raw, staging, cleansed, curated ↗
3. Реализация: чтение и валидация CSV и NDJSON ↗
4. Реализация: трансформация и запись в Parquet ↗
5. Реализация: событийный поток в Avro ↗
6. Тестирование и локальный прогон пайплайна ↗
7. Развёртывание и мониторинг пайплайна ↗

Модуль 26. Дорожная карта: что дальше

4 урока
1. Архитектура data platform'ы вокруг форматов данных ↗
2. Schema Registry как центр управления схемами ↗
3. Data mesh и форматы данных ↗
4. Дорожная карта: куда расти дата-инженеру ↗