DE – Telegram
522 subscribers
312 photos
81 videos
15 files
405 links
Data Engineering Technologies.
SQL, Python, Kafka, Spark, Pandas, Airflow, Clickhouse, Greenplum, Postgres, dbt, LLM agentic systems, AI, robots, drones etc.

Boost channel - https://news.1rj.ru/str/boost/data_engi
Download Telegram
👏14
В инженерии данных примерно такая же история, или нет? 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18
😁9
🙄 Apache Iceberg vs Delta Lake vs Hudi: выбор формата для AI/ML

Выбор правильного формата хранения данных имеет решающее значение для машинного обучения (ML) и аналитики. Неправильный выбор может привести к медленным запросам, плохой масштабируемости и проблемам с целостностью данных.

😕 Почему формат имеет значение?

Традиционные хранилища данных сталкиваются со следующими проблемами:
🔜 Отсутствие транзакций ACID - риск конфликтов чтения/записи
🔜 Отсутствие управления версиями данных — трудно отслеживать изменения
🔜 Медленные запросы — большие наборы данных замедляют аналитику

▶️▶️ Apache Iceberg — решение для аналитики и пакетной обработки

📌 Зачем?

✔️ Обработка исторических наборов данных
✔️ Необходимость оптимизации запросов и развития схемы
✔️ Пакетная обработка является приоритетом

📌 Преимущества

✔️ ACID-транзакции с моментальной изоляцией
✔️ Возможность вернуться в прошлое - восстановление предыдущих версий данных
✔️ Скрытое разделение - ускоряет запросы
✔️ Поддержка Flink, Trino, Presto, Spark ⭐️

📌 Использование

✔️ BI и анализ тенденций
✔️ Хранение данных для обучения модели машинного обучения
✔️ Логи аудита и сценарии отката

▶️▶️ Delta Lake — решение для рабочих нагрузок, связанных с AI, ML и потоковыми данными

📌 Зачем?

✔️ Потоковая передача данных имеет решающее значение для ML
✔️ Нужны настоящие транзакции ACID
✔️ Работа в основном с Apache Spark ⭐️

📌 Преимущества

✔️ Глубокая интеграция со Spark ⭐️
✔️ Инкрементальные обновления (позволяют избежать полной перезаписи набора данных)
✔️ Z-Ordering – группирует похожие данные для более быстрых запросов
✔️ Возможности отката и восстановления

📌 Использование

✔️ Конвейеры машинного обучения в реальном времени (обнаружение мошенничества, прогнозная аналитика)
✔️ Рабочие процессы ETL
✔️ Обработка данных IoT и логи

▶️▶️ Apache Hudi — решение для обновлений в реальном времени

📌 Зачем?

✔️ Необходимость быстрой аналитики в реальном времени
✔️ Данные нуждаются в частых обновлениях
✔️ Работа с Apache Flink, Spark ⭐️ или Kafka

📌 Преимущества

✔️ Транзакции ACID и управление версиями
✔️ Слияние при чтении (MoR) – обновление без перезаписи целых наборов данных
✔️ Оптимизировано для машинного обучения в реальном времени (обнаружение мошенничества, рекомендации)
✔️ Поддержка микро-пакетирования и потоковой передачи

📌 Использование

✔️Обнаружение мошенничества (банковские операции, мониторинг безопасности)
✔️ Рекомендательные системы (электронная коммерция, стриминговые сервисы)
✔️ AdTech (торги в реальном времени, персонализированная реклама)

🧐 Какой формат лучше всего подходит для AI/ML?

😀 Iceberg — для исторических данных и бизнес-аналитики
😀 Delta Lake — для AI/ML, потоковой передачи и Apache Spark ⭐️
✔️ Hudi — для частых обновлений и машинного обучения в реальном времени (обнаружение мошенничества, рекомендации, AdTech)

🔜 Полный обзор можно найти в статье по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥7👏32
😁9
😁10
📊 Как избежать хаоса с данными?
Способы обеспечения согласованности показателей в
хранилище

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

🧐 Почему показатели расходятся?
Причина кроется в спонтанном росте аналитики:
🔘 Аналитик пишет SQL-запрос для расчёта метрики.
🔘 Затем другие команды создают свои собственные версии на основе этого запроса, внося незначительные изменения.
🔘 Со временем возникают расхождения, и команда аналитики тратит всё больше и больше времени на устранение несоответствий.

Чтобы избежать такой ситуации, стоит внедрить единые стандарты управления метриками.

✏️ Два подхода к обеспечению согласованности

▶️▶️Семантический слой
Это промежуточный слой между данными и инструментами аналитики, где метрики определяются централизованно. Они хранятся в статических файлах (например, YAML) и используются для автоматической генерации SQL-запросов.

🙂 Плюсы:
✔️ Гибкость — адаптируется к различным запросам без предварительного создания таблиц.
✔️ Прозрачность — единые определения доступны для всех команд.
✔️ Актуальность — данные обновляются в режиме реального времени.

🙄 Минусы:
✖️ Требует инвестиций в инфраструктуру и оптимизацию.
✖️ Может увеличить нагрузку на вычисления (это ты сможешь решить с помощью кэширования).

📌 Пример инструмента: Cube.js - одно из немногих зрелых open-source решений.

▶️▶️Предварительно агрегированные таблицы
Здесь заранее создаются таблицы с предварительно вычисленными метриками и фиксированными измерениями.

🙂 Плюсы:
✔️ Простая реализация, удобная для небольших проектов.
✔️ Экономия вычислительных ресурсов.
✔️ Полный контроль над вычислениями.

🙄 Минусы:
✖️ Сложно поддерживать по мере увеличения количества пользователей.
✖️ Возможны расхождения, если метрики определены в разных таблицах.

😎 Какой метод выбрать?
Оптимальный подход - гибридное использование:
🔘 Реализуй семантический слой для масштабируемости.
🔘 Используй предварительно агрегированные таблицы для критических показателей, где важна минимальная стоимость вычислений.

#de #engineering #chaos
Please open Telegram to view this post
VIEW IN TELEGRAM
6👏2❤‍🔥1
Forwarded from DataEng
Курс AI Agents от Microsoft

Нашел на просторах сети бесплатный курс по AI Агентам от Microsoft: https://microsoft.github.io/ai-agents-for-beginners/
Помимо текстового материала есть и видео лекции на Ютубе.
❤‍🔥7
😁13👏3
😁101
😁13
Сколько часов ты спал?

#meme
😁6
😁9
OpenAI показали свои новые модели GPT-4.1, GPT-4.1 mini и GPT-4.1 nano

В чате их не будет: они только для разработчиков в API. У всех трех моделей контекст 1 миллион токенов, для OpenAI это впервые. Знания до 1 июля 2024.

Эти модели тренировали специально, чтобы они были эффективны в задачах связанных с разработкой. В честь запуска Cursor и Windsurf дают попользоваться этими моделями совершенно бесплатно 🆓
❤‍🔥8
❤‍🔥5
😁9
Forwarded from Dealer.AI
AirFlow, MLFlow, DVC, ClearML?? Пффф. IstructPipe от Google!!!

Вот тебе шкет, к вайб кодингу еще и вайб пайпинг. Фу, звучит даже противно.
Крч берёшь, пишешь инструкцию к LLM для ML пайпа и получаешь псевдокод, псевдо инструкцию, и псевдо интерпретацию. 🤣🤣🤣
Шучу, получаешь крч ток псевдо код, пайп и блоксхемку.
Делоешь, вайб автомотизируешь и койфуешь.


https://research.google/blog/instructpipe-generating-visual-blocks-pipelines-with-human-instructions-and-llms/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7
🚀 Airflow 3.0.0 уже здесь!


Что нового?

🧩 Микросервисная архитектура

Событийное планирование

🧬 Версионирование DAG'ов

🖥️ Новый интерфейс на React

🔐 Улучшенная безопасность

🌍 Удалённое выполнение задач

🐍 Поддержка только Python 3.9+


🔗 Подробнее: Релиз Airflow 3.0.0

#ApacheAirflow #DataEngineering #Airflow3 #WorkflowOrchestration


https://github.com/apache/airflow/releases/tag/3.0.0
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6
PEP 750: t-строки в 3.14

В питон добавили еще один способ форматировать строки. Теперь – со специальным АПИ для внешних интеграций.

- PEP: https://peps.python.org/pep-0750
- Реализация: https://github.com/python/cpython/pull/132662

Основная причина: использовать f строки удобно, но нет никакого АПИ для перехвата момента "вставки" или интерполяции значений. Например, при форматировании html или sql – требуется специальным образом делать escape для значений. И раньше код вида f"<div>{template}</div>" представлял собой дыру в безопасности и потенциальное место для XSS.

string.templatelib.Template

Новый префикс t не будет создавать объект str, он будет создавать объект класса string.templatelib.Template:


>>> user = 'sobolevn'
>>> template = t"Hi, {user}"
>>> template
Template(strings=('Hi, ', ''), interpolations=(Interpolation('sobolevn', 'user', None, ''),))

>>> from string.templatelib import Template
>>> isinstance(template, Template)
True


Обратите внимание, что при создании template – у нас не произошло форматирование сразу. Мы создали объект, у которого есть свойства strings и interpolations, из которых можно собрать финальную отформатированную строку.

Давайте посмотрим на примере. Допустим, мы хотим формировать URL из наших данных:


>>> domain = 'example.com'
>>> query = 'python string formatting is too complex'
>>> template = t'https://{domain}?q={query}'


И сам код логики форматирования, где мы будем вставлять значения разным способом. Если у нас шаблон query, то мы будем использовать quote_plus для его форматирования. Остальные значения – будем вставлять как есть:


>>> from string.templatelib import Template, Interpolation
>>> from urllib.parse import quote_plus

>>> def format_url(template: Template) -> str:
... parts = []
... for part in template:
... match part:
... case str() as s: # regular string
... parts.append(s)
... case Interpolation(value, expression='query'):
... parts.append(quote_plus(value))
... case Interpolation(value):
... parts.append(value)
... return ''.join(parts)


И вот результат:


>>> format_url(template)
'https://example.com?q=python+string+formatting+is+too+complex'


Только теперь наш Template был отформатирован. Нами. Ручками.
У нас есть полный контроль за процессом форматирования. Вот в чем суть данного ПЕПа.

Фичи одной строкой

- Работает = как обычно в f строках: t'{user=}'
- Есть привычные определители формата: !r, !s, .2f, тд
- t строки можно конкатенировать: t'Hello' + t' , world!' и t'Hello, ' + 'world'
- Поддерживается режим raw строк: rt"Hi \n!"

Как устроено внутри?

Интересные места имплементации:
- Изменения лексера
- Изменения грамматики языка
- Новое CAPI _PyTemplate
- Новые классы Template и Interpolation написанные на C
- Новый байткод BUILD_INTERPOLATION и BUILD_TEMPLATE


>>> import dis
>>> user = 'sobolevn'
>>> dis.dis('t"Hi, {user}"')
0 RESUME 0

1 LOAD_CONST 2 (('Hi, ', ''))
LOAD_NAME 0 (user)
LOAD_CONST 1 ('user')
BUILD_INTERPOLATION 2
BUILD_TUPLE 1
BUILD_TEMPLATE
RETURN_VALUE


Обсуждение: как вам еще один способ форматирования строк?

| Поддержать | YouTube | GitHub | Чат |
7❤‍🔥1😁1