5 minutes of data
1.92K subscribers
191 photos
4 videos
2 files
514 links
I’m making my life less dull by spending time learning and researching “how it works“ in the data engineering field.

Интерактивный учебник SQL
https://querynomic.one/#/

по всем вопросам @just_vanich
Download Telegram
Optimizing Docker Images for Python Production Services

Хороший пост о том, как оптимизировать Docker-образы для ваших Python-приложений. 🚀

Автор статьи, рассказывает о лучших практиках и методах уменьшения размера Docker-образов, а также о том, как сделать их более эффективными. Вот несколько ключевых моментов:

1. Используйте официальный Python-образ: Начните с базового образа Python, чтобы избежать лишних зависимостей.
2. Минимизируйте количество слоев: Объединяйте команды RUN, чтобы уменьшить количество слоев в вашем образе.
3. Удаляйте временные файлы: Убедитесь, что все временные файлы и кеши удалены после установки зависимостей.
4. Используйте multistage builds: Разделите процесс сборки и конечный образ, чтобы включить только необходимые файлы и библиотеки.

Полную статью можно прочитать по ссылке
🐳2
Netflix Maestro

Netflix открыл доступ к workflow orchestrator Maestro, про который уже был пост в канале.
Так же он добавлен в insta-infra, поэтому развернуть и потестировать новый инструмент для оркестрации можно в одну команду.
👍1🥱1
пятничное
😁13
🚀 Чат! Я так понимаю, что на моей доисторической Родине Clickhouse любят больше, но не могу не похвалиться в этом чате!
Рад объявить о выходе нового курса на канале StarTree, посвященного продвинутым темам в Apache Pinot!
Смотрите плейлист здесь! 📽️
Перед началом курса настоятельно рекомендую ознакомиться с курсом Apache Pinot 101
Все бесплатно, даже есть материалы для самостоятельного обучения
🚀 В первой серии мы познакомим вас с курсом и расскажем, что вас ждет впереди.
🛠️ Во втором видео мы углубимся в настройку вашего собственного кластера Apache Pinot! Узнайте, как настроить кластер.
🔒 В третьем видео мы расскажем о настройке тенантов в Apache Pinot. Узнайте, как изолировать и управлять различными наборами данных и рабочими нагрузками.
🗂️ Четвертое видео посвящено созданию схем, таблиц и сегментов в Apache Pinot. Узнайте, как эффективно структурировать и организовывать данные.
📥 В пятом видео мы исследуем техники загрузки данных в Apache Pinot. Узнайте, как эффективно загружать данные в реальном времени и пакетные данные.
🔄 Шестое видео посвящено Upserts в Apache Pinot. Узнайте, как обновлять существующие записи или вставлять новые без проблем.
🔄 В седьмом видео мы исследуем трансформацию данных во время загрузки в Apache Pinot. Узнайте, как очищать и обогащать данные на лету.
🔍 В восьмом видео мы рассмотрим запросы данных с использованием одноэтапного и многоэтапного механизмов запросов в Apache Pinot. Узнайте, какой подход лучше всего подходит для ваших запросов.
В девятом видео мы исследуем различные типы индексов в Apache Pinot. Узнайте, как оптимизировать производительность запросов с помощью правильных индексов.
🤖 В десятом видео мы познакомим вас с Minions в Apache Pinot. Узнайте, как эти фоновые процессы могут автоматизировать и оптимизировать ваши операции с данными. Готовы встретиться с Minions?
🔥3👍1
Performance Evaluation of Hive 4 on MR3 and Trino using the TPC-DS Benchmark

Недавно был выпущен HIVE 4, который заменяет Tez на MR3 в качестве механизма выполнения.
В этой статье оценивают производительность Hive 4 на MR3 с последней версией Trino c помощью теста TPC-DS Benchmark.

Для эксперимента использовали кластер, состоящий из 1 master и 12 worker нод со следующими свойствами:

⚙️ 2 x Intel(R) Xeon(R) E5-2640 v4 @ 2.40GHz
⚙️ 256GB of memory
⚙️ 1 x 300GB HDD, 6 x 1TB SSDs
⚙️ 10 Gigabit network connection

Итого объем памяти рабочих узлов составляет 12*256ГБ = 3072ГБ. Кластер работает под управлением HDP (Hortonworks Data Platform) 3.1.4 и использует коэффициент репликации 3

Analysis

#1. Correctness

Обе системы успешно завершают все запросы и согласовывают результаты, за исключением того, что Trino возвращает неправильные ответы на запрос 23 и запрос 72.

#2. Total running time

По общему времени работы Hive 4 на MR3 работает немного быстрее, чем Trino.

- Trino 5798 секунд
- Hive 5744 секунды

#3. Response time

Что касается среднего геометрического времени работы, Trino реагирует примерно на 15 процентов быстрее, чем Hive 4 на MR3.

- В среднем Trino выполняет каждый запрос за 17,99 секунды.
- В среднем Hive 4 на MR3 завершает каждый запрос за 21,02 секунды.

Conclusion

Из сравнения с Trino 453 авторы делают вывод, что Hive 4 на MR3 действительно является быстрым механизмом. Это практичное решение для хранилища данных, которое значительно упрощает эксплуатацию Apache Hive. Например, Hive 4 можно запустить на MR3 не только в Hadoop, но и в Kubernetes и даже в автономном режиме, не требуя никакого менеджера ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Hamilton

Подьехал еще один оркестратор, отличий от других инструментов практический нет.
Так же используются питоновские функции, которые определяют трансформации в пайплайне, а параметры указывают на зависимости.
Hamilton автоматический соединяет отдельные функции в DAG, есть UI, каталогизация и мониторинг.

И небольшой гайд по Data Quality с использованием Hamilton.

Помните шутки про фронтенд?
Пока учишь новый фрэймворк, он уже устарел.
Теперь это можно говорить про индустрию работы с данными.
4
Basics of Lakehouse Engineering

Нашел для вас годный видеокурс по основам Lakehouse.
Курс ведет автор книги

Apache Iceberg: The Definitive Guide

Alex Merced

#база
4
Стайлгайд

Окей в языках программирования мы все слышали про стайлгайд и линтеры, но что же в sql?
Обычно все пишут как попало, если только нет определенных требований в компании.

Есть достаточно не плохой форматер для SQL, sqlfluff , я им пользуюсь для DBT проектов.
Но советую почитать стиль от больших компаний.
Вот ссылки:

GitLab

Mozilla

Noname
🔥6👍21
Линтеры в Python

В python много линтеров на любой вкус и цвет, выбирай какой нравится и настраивай под себя.
Но наверное самым жестким является wemake-python-styleguide
У них даже на главной странице заявлено

Welcome to the strictest and most opinionated Python linter ever.

Основным кнтрибьютором проекта является Никита Соболев, у которого есть крутой курс Типизация в Python.

Дата Инженеры не так сильно упарываются в линтеры и CI как бэкендеры, но все чаще это присутсвует в новых проектах.

Посмотрим на примере Airflow и TaskFlow API.

Берем код с сайта Astranomer и запускаем линтер с настройками из коробки.
Если не брать во внимание простые ворнинги типа:

- Q000 Double quotes found but single quotes preferred
- W292 no newline at end of file

То стоит посмотреть на следующий ворниг:
- WPS430 Found nested function: extract_bitcoin_price


@dag(schedule="@daily", start_date=datetime(2021, 12, 1), catchup=False)
def taskflow():
@task(task_id="extract", retries=2)
def extract_bitcoin_price() -> Dict[str, float]:
return requests.get(API).json()["bitcoin"]


Получается, нужно переписывать большую часть дага, чтобы линтеры прошли.

Теперь попробуем традиционный синтаксис написания дага (переключаем вкладку на сайте astronomer на Traditional syntax).
И получаем другой интересный ворнинг:

- WPS428 Found statement that has no effect


extract_bitcoin_price >> process_data >> store_data


Всем знакомый синтаксис обьявления зависимомтей в airflow тоже не проходит линтер.
Получается, чтобы линтеры прошли нужно комбинировать оба варианта синтаксиса в Airflow.

Линтеры безусловно нужны, но нужно понимать, что линтер настраиваится под проект, а не наоборот.
Перед внедрением линтеров в свой проект обязательно обсудити с командой, какие проверки вам необходимы, а от каких можно отказаться.
Хороший пример был приведен выше с Airflow, все примеры кода тестировал с оффициального сайта Airflow и Astronomer
2
И в догонку пятничное про линтеры для Python Dev
CMU Intro to Database System Fall 2024

Университет Карнеги-Меллон (CMU) открывает регистрацию на курс "Введение в системы баз данных" (15-445/645) на осенний семестр 2024 года!

🔍 Что вас ждет:
• Глубокое погружение в мир систем управления базами данных (СУБД)
• Изучение внутренних механизмов работы СУБД
• Практические навыки разработки компонентов для СУБД

📅 Важные даты:
• Начало занятий: 26 августа 2024
• Окончание занятий: 6 декабря 2024

👨‍🏫 Преподаватель: Andy Pavlo

🏫 Формат: Лекции по понедельникам и средам.

💻 Проект курса: Разработка собственной реляционной СУБД на C++

🔗 Подробности и регистрация:

YouTube курса
🔥1
DevOps interview by Prepare.sh

В Prepare.sh добавили новый раздел "вопросы с интревью DevOps", так же появился раздел с лабами.
В разделе about можно прочитать следующее

We are a small team with a vision to build the world's best EdTech platform.


Сайт начинался как набор заметок с интревью из FAANG, а теперь ребята планируют сделать edtech платформу.
🔥2
onETL

onETL это Python библиотека сделанная МТС, на базе Apache Spark и других open-source инструментов.

Goals:
- Предоставить унифицированные классы для извлечения данных и загрузки данных в различные хранилища.

- Предоставляет API Spark DataFrame для выполнения трансформаций.

- Позволяет выполнять SQL-запросы, а также DDL, DML и вызывать функции/процедуры.

- Поддержка различных стратегий чтения для инкрементной и пакетной обработки данных.

- Предоставляет хуки и плагины для изменения поведения внутренних классов.
👍3👎1💩1🏆1
Python Developers Survey 2023

Седьмой ежегодный официальный опрос разработчиков Python, проводимый совместно Python Software Foundation и JetBrains.
Ответы были собраны в ноябре 2023 г. – феврале 2024 г., в них приняли участие более 25 000 разработчиков и энтузиастов Python из почти 200 стран и регионов.

Краткие результаты:

Самым популярным фреймворком остается Flask.
В первую очередь, это связано с тем, что python активно используется в data science/analytics и предпочтительнее использовать легкие Flask/FastApi для создания RESTful API.

Как отмечалось и в прошлогоднем опросе, «Poetry» становится все более популярным. Разрешение конфликтов зависимостей — это одна из функций, которая экономит много времени по сравнению с pip, но он все еще значительно отстает от venv.


Purposes for Using Python

-
Data analysis 44%
- Web development 42%
- Machine learning 34%

Frameworks and Libraries

- Flask 33%
- Django 33%
- Requests 30%

Tools for data exploration and processing

- Pandas 77%
- NumPy 72%
- Spark 16%
- Airflow 14%

Python Packaging

-
venv 55%
- virtualenv 28%
- poetry 18%

Очень интересный обзор языка и его экосистемы, можно понять в каком направление движется язык и какие технологии актуальны на данный момент.
Channel name was changed to «Data Whisperer»
📊 Дайджест по инженерии данных: август 2024 🚀

Сегодня разберем несколько интересных тем из мира инженерии данных. Поехали! 👇

1️⃣ Удаления в ETL процессах
🔹 Удаление данных - важная, но часто недооцененная часть ETL.
🔹 Основные стратегии:

- Soft delete: пометка записей как удаленных
- Hard delete: физическое удаление из базы
- Архивирование: перемещение в отдельное хранилище
🔹 Выбор зависит от требований к производительности и соответствию нормам.

2️⃣ Как построить небольшое озеро данных (~100 ГБ)?
🔹 Для малых объемов подойдет простое решение:

- S3 или аналог для хранения
- Duckdb для запросов и анализа
- Airflow для оркестрации
🔹 Преимущества: низкая стоимость, простота настройки
🔹 Масштабируемость при росте данных

3️⃣ Создание действительно real-time дашбордов
🔹 Ключевые моменты:

- Использование потоковой обработки (Kafka, Flink)
- In-memory базы данных (Redis)
- WebSocket для мгновенного обновления UI
🔹 Важно: оптимизация запросов и кэширование

4️⃣ Sparkle: модульный ETL от Uber
🔹 Uber представил Sparkle - фреймворк для стандартизации ETL процессов.

- Модульный подход: разделение ETL на независимые компоненты
- Повторное использование кода и упрощение поддержки
- Интеграция с Apache Spark для обработки больших объемов данных

🔹 Преимущества:

- Ускорение разработки ETL пайплайнов
- Улучшение качества данных
- Упрощение масштабирования процессов

🔹 Sparkle демонстрирует тренд на стандартизацию и модульность в крупномасштабных data engineering проектах.

💡 Вывод: мир инженерии данных постоянно развивается. Важно выбирать инструменты и подходы, соответствующие вашим конкретным задачам и масштабам.
👍2
Грокаем конкурентнось

Вот и дождался перевода замечательной книги от Кирилла Боброва.

Читал на английском, взял еще на русском в бумаге, очень рекомендую.

И канал Кирилла
2
SyncLite

SyncLite— это новаторская платформа репликации CDC для встроенных баз данных, предназначенная для расширения возможностей приложений общего назначения с интенсивным использованием данных, поиска GenAI и приложений RAG для периферийных, настольных и мобильных сред. Он легко интегрируется со встроенными базами данных, такими как SQLite, DuckDB, Apache Derby, H2 Database, HyperSQL (HSQLDB), обеспечивая для них транзакционную репликацию и консолидацию данных в реальном времени. SyncLite Logger эффективно выполняет сбор измененных данных (CDC) из многочисленных экземпляров приложений, созданных на основе встроенных баз данных. Эти созданные файлы журналов синхронизируются с SyncLite Consolidator, который реплицирует и консолидирует их в различных ведущих отраслевых базах данных, хранилищах данных и озерах данных, что позволяет осуществлять глобальную аналитику, поиск GenAI и приложения RAG.
O_Reilly_Конвейеры_данных_2024.pdf
40.8 MB
Конвейеры данных. Карманный справочник 2024

Книга посвящена передовым методам построения конвейеров данных, сбору данных из множества разнообразных источников и преобразованию их для аналитики. Дано введение в конвейеры данных, раскрыта их работа в современном стеке данных. Описаны стандартные шаблоны конвейеров данных. Показан процесс сбора данных от их извлечения до загрузки в хранилище. Затронуты вопросы преобразования и проверки данных, оркестровки конвейеров, методов их обслуживания и мониторинга производительности. Примеры программ написаны на Python и SQL и задействуют множество библиотек с открытым исходным кодом
👍5
Сегодня поговорим о важном аспекте работы дата-инженера - проектировании пайплайнов данных. Вот несколько ключевых вопросов, которые стоит задать себе перед началом работы:

1️⃣ Цель пайплайна

Определение цели пайплайна - это фундаментальный шаг. Разные цели требуют разных подходов:

- Для телеметрии SpaceX нужна высокая производительность и надежность в реальном времени.
- Статистика посещений приюта для животных может быть менее требовательной к скорости и частоте обновлений.

2️⃣ Объем данных

Объем данных влияет на выбор технологий и архитектуру:

- Малые объемы: можно использовать простые решения, например, DuckDb.
- Средние объемы: подойдут традиционные СУБД, как PostgreSQL или MySQL.
- Большие объемы: потребуются распределенные системы, такие как Hadoop или Spark.

3️⃣ Частота запуска

От частоты запуска зависит выбор между батч-обработкой и стримингом:

- Ежемесячно или еженедельно: подойдет батч-обработка (например, Apache Airflow).
- Ежечасно или чаще: лучше использовать потоковую обработку (Apache Kafka, Apache Flink).

4️⃣ Скорость получения результата

Требования к скорости влияют на архитектуру:

- Реальное время: потребуются in-memory решения, как Apache Ignite или Redis.
- Задержка в минутах: подойдут стриминговые системы, как Apache Kafka Streams.
- Задержка в часах/днях: можно использовать батч-обработку на Hadoop или Spark.

5️⃣ Требуемая точность

Точность влияет на выбор алгоритмов и подходов:

- Высокая точность: потребуется обработка каждой записи, возможно, с использованием транзакций.
- Приближенные результаты: можно применять вероятностные структуры данных (HyperLogLog) или семплирование.

6️⃣ Состав команды

Навыки команды важны при выборе технологий:

- Java-разработчики: Apache Hadoop экосистема может быть предпочтительнее.
- Python-разработчики: лучше подойдут инструменты, как Apache Airflow или Dask.

7️⃣ Бюджет

Финансовые ограничения влияют на выбор инфраструктуры:

- Ограниченный бюджет: open-source решения на собственном оборудовании.
- Большой бюджет: облачные сервисы (AWS, Yandex Cloud) с их управляемыми решениями.

Ответив на эти вопросы, вы сможете сузить выбор до нескольких вариантов, провести тесты и принять окончательное решение. Помните, правильно спроектированный пайплайн - залог эффективной работы с данными!

Удачи в проектировании ваших data-пайплайнов! 🚀📊

#база
🔥51