DataEng – Telegram
DataEng
4.35K subscribers
40 photos
9 files
537 links
Канал про Data Engineering & Distributed Systems.

Всё, что вы хотели знать про построение инфраструктуры для хранения, обработки и эффективного анализа гигантского объёма данных.

Автор @adilkhash
Download Telegram
Всем привет!

Я сделал курс по Luigi бесплатным для всех, велком изучать — Введение в Data Engineering: дата-пайплайны

Luigi это компактный инструмент для построения зависимых между собой задач на базе нескольких сущностей: Task, Target. Он идеально подойдёт там, где Airflow кажется избыточным инструментом. В далёком 2017 году я писал небольшой обзорный пост на Luigi у себя в блоге: Строим Data Pipeline на Python и Luigi. С тех пор мало что изменилось в концепции инструмента, он по прежнему компактный и простой, именно в этом вся его прелесть.
🔥37👍15
Курс про Apache Airflow бесплатно

Решил выложить свой курс про Apache Airflow абсолютно бесплатно для всех: Apache Airflow 2.2: практический курс
За то время что существует курс, Apache Airflow успел обрасти множеством новых фич, которые только предстоит покрыть в будущем, возможно в виде отдельных роликов на Ютуб или в виде статей у себя в блоге.

В любом случае курс не потерял своей актуальности и может послужить неплохим введением для новичков и более опытных пользователей. Например, в курсе я подробно разбираю как развернуть у себя на сервере production-ready Airflow, а также настроить автодеплой дагов через GitHub Actions.

Велком!
🔥81👍11
Ребята, всем привет! 🤝

Вас стало ещё больше и поэтому я хотел напомнить о существовании моего другого телеграм-канала с вакансиями в области DataEng, DataOps и DBA: https://news.1rj.ru/str/dataeng_jobs
В этот канал автоматически попадают вакансии по вышеупомянутым категориям, классификация происходит через OpenAI API.

Подписывайтесь, скоро источников с вакансиями станет ещё больше, и возможно именно вы найдёте лучшее для себя предложение — @dataeng_jobs
🔥5👍4
Убийца DuckDB 🔫

А вы уже видели аналог DuckDB от ребят из ClickHouse? Называется это чудо chDB. Представляет из себя встроенную OLAP базу данных под капотом которой пыхтит движок ClickHouse. Умеет в Parquet, Arrow, ORC и кучу других форматов, есть биндинги для Python, Go, Rust, NodeJS, Bun. Работает на Linux и MacOS, жаль Windows не поддерживает.

Узнал я о существовании этой БД из новости о том, что chDB присоединяется к ClickHouse: https://auxten.com/chdb-is-joining-clickhouse/
🔥14👍4💯2
У ребят из PostgresPro есть отличные, а главное бесплатные, книги по PostgreSQL: https://postgrespro.ru/education/books
🔥31👍6💯1
Airflow 2.9

Буквально час назад вышла новая версия Apache Airflow — 2.9. В релизе очень много изменений и фиксов, а также новых фич:

— поддержка Python 3.12
— Listener API стабилизировался и его можно использовать в продакшене
— Поддержка multiple executors (AIP-61 Hybrid Execution)
— DatasetOrTimeSchedule, срабатывание по Timetable расписанию и Dataset событиям
@task.bash декоратор. Возвращаемое значение обёрнутой в этот декоратор функции будет выполнено в виде bash-команды

Полный список изменений смотрите по ссылке.
🔥17👍9💯1
$1300 за пустой S3-бакет

В сети набирает популярность статья на платформе Medium, где автор рассказывает как ему за пустой S3-бакет "прилетел" счёт от AWS на $1300How an empty S3 bucket can make your AWS bill explode
Автор обнаружил, что к его приватному бакету прилетело более 100 миллионов PUT-запросов:

My bill was over $1,300, with the billing console showing nearly 100,000,000 S3 PUT requests executed within just one day!

Оказалось, что в конфигурации какого-то популярного опенсорс тула по умолчанию было прописано название бакета, которое в точности совпадало с названием бакета автора. И миллионы копий этой тулзы с настройками по умолчанию пытались загрузить в этот бакет свои бэкапы. К моему удивлению, оказалось, что AWS взымает плату в том числе за запросы с ошибками (коды 4xx).

Yes, S3 charges for unauthorized requests (4xx) as well[1]. That’s expected behavior.


Видимо забавы ради автор статьи сделал публичным свой бакет и в течение 30 секунд собрал аж 10 гигабайт чужих данных. Вот так утечка😵

Уроки, извлеченные автором:

1. Любой кто знает название вашего бакета может "оставить вас без штанов"
2. Добавляйте суффиксы к названием, не используйте незамысловатые названия
3. Явно указывайте регион при обращении к S3, это помогает избежать платы за редиректы

Судя по твиту Jeff Barr, AWS в курсе этой ситуации:

Thank you to everyone who brought this article to our attention. We agree that customers should not have to pay for unauthorized requests that they did not initiate. We’ll have more to share on exactly how we’ll help prevent these charges shortly.
👍29
На прошлой неделе JetBrains анонсировали релиз их новой IDE для разработки на Rust: RustRover
Изначально это был плагин для их IDE, который в итоге перерос в полноценный продукт. Также ребята решили предоставить бесплатную лицензию на продукт для некоммерческой разработки для всех. Я попробовал и получил бесплатную лицензию на 1 год, возможно в будущем её можно будет продлить.

Впервые язык Rust я попробовал ещё в далёком 2015 году, когда вышла первая стабильная версия языка. С тех пор были неоднократные попытки с моей стороны написать что-нибудь существенное, но не было подходящих проектов под рукой. Сейчас же видно, что Rust плотно вошел в экосистему Python и внёс значительный вклад в её развитие. Наверняка вы слышали о таких проектах как Pydantic, Polars, PyO3 и т.д. Некоторые из них стали революционными для Python.

Python + Rust = ❤️

Также буквально на днях вышел вебинар от JetBrains, посвященный языку Rust и методам его изучения: Programming Education: Tailoring Tools and Techniques for Rust. Если вы вдруг задумались об изучении Rust, то рекомендую к просмотру. В описании к видео есть полезные ресурсы, которые помогут лучше усвоить сложные концепции языка такие, например, как Ownership.

Со своей стороны я попробую ещё раз оседлать эту лошадку и найти подходящий проект, чтобы не потерять мотивацию на пути изучения.

А какой у вас был опыт с Rust?
🔥12👍6
100 самых популярных Python докладов

Нашел в сети подборку из 100 самых просматриваемых докладов про Python: 100 most-watched Python 2023 conference talks ordered by the number of views
Среди этих докладов популярны темы про Rust, data engineering и оптимизацию производительности.

К слову, PyCon US 2024 уже прошел, но в открытом доступе до сих пор нет докладов. Надеюсь на их скорое появление, т.к. там есть на что посмотреть.
👍10🔥10
Если вдруг вас интересует тема разработки LLM, то вчера стартовал бесплатный курс от ребят из DataTalks.Club — LLM Zoomcamp

Курс рассчитан на 10 недель в формате живых трансляций и домашних заданий с обсуждениями.

Весь необходимый материал в открытом доступе на Гитхабе: https://github.com/DataTalksClub/llm-zoomcamp
👍14🔥12
Об актуальном 😁
💯75🔥13👍12
В мае этого года прошла самая большая конференция по Python - PyCon US 2024. К сожалению, уже несколько лет подряд доклады с этой конференции выходят с большой задержкой. Этот год не стал исключением. Буквально только неделю назад стали доступны большинство докладов для просмотра на Ютубе. Плейлист всех видео смотрите тут. Я же выделю наиболее релевантные доклады для нас:

Cheuk Ting Ho: PyO3 101 - Writing Python modules in Rust
3-х часовой туториал по написанию расширений на Rust для Python.

Yan Yanchii: Pointers in Python
Солидный туториал для любителей покопаться в "кишках" Питона.

Renne Rocha: Gathering data from the web using Python
Трёхчасовой туториал про веб-скрейпинг на Scrapy. Начинающим дата инженерам может быть весьма полезен.

Aya Elsayed, Rhythm Patel: No More Raw SQL: SQLAlchemy, ORMs & asyncio
Воркшоп по SQLAlchemy. Полезно, если у вас небольшой опыт с ORM, в частности с алхимией.

Reuven M. Lerner: Times and dates in Pandas
Доклад про работу со временем и датами в pandas. Полезно, взял фишечки для себя, хотя в последнее время не так часто работаю с pandas для анализа данных.

Lynn Root: The Design of Everyday APIs
Полезный доклад для разработчиков публичных библиотек, да и не только публичных. Удобство и красота реализации интерфейсов программ.

Sebastian Buczyński: Having fun with pydantic and pattern matching
Обзор фишечек при работе с pydantic и сопоставлениями по шаблону.

Alex Monahan, Gabor Szarnyas: Python and SQL: Better Together, Powered by DuckDB
Про DuckDB, Python и SQL на стероидах.

David Hewitt: How Python Harnesses Rust through PyO3
Про Rust в экосистеме Python от автора PyO3.

Ссылка на полный плейлист докладов.
🔥26👍8
Ребята из Supabase не перестают радовать! 😲

На днях в сети появился новый сервис от Supabase: https://postgres.new. Это data modeling сервис на базе Postgres со встроенным AI ассистентом. Запуск Postgres прямо в браузере возможен благодаря https://pglite.dev/. Это облегчённая версия Postgres, упакованная в WASM.

Целевая аудитория сервиса:

— аналитики данных
— дата инженеры
— студенты, изучающие реляционные базы данных, в частности PostgreSQL
— разработчики, разрабатывающие схемы таблиц

Пример работы с сервисом смотрите на Ютубе.
🔥18👍6
Open Source Amazon SQS

Хочу поделиться с вами интересной находкой — smoothmq. Это полностью совместимая с Amazon SQS очередь на базе SQLite, написана на Go. Я активный пользователь Amazon SQS, это очень удобный и надёжный сервис для организации коммуникации между распределенными системами, и практически бесплатный, за первый миллион запросов в месяц вы ничего не платите.

И вот в сети появился Open Source аналог, который можно использовать в своих проектах. Единственный его минус — SQLite, который непросто масштабировать на несколько машин, а значит ни о какой надёжности пока речи и нет. Попытки масштабировать SQLite есть, и я о них ранее писал. Например, это проект rqlite от инженера из Google, или Litestream.

Автор, кстати, решил монетизировать свой продукт, запустив на его базе SaaS: https://smoothmq.com/. Правда по цене дороговато выходит.
👍10💯4
Get or Create средствами базы данных

У Haki Benita в блоге нашел статью про реализацию функции get_or_create средствами PostgreSQL — How to Get or Create in PostgreSQL: and why it is so easy to get wrong
Отличная статья, мне нравится, что автор использует пошаговый подход и объясняет на каждом этапе какую проблему решает. На первый взгляд может показаться, что нет никаких проблем реализовать Get or Create, но дьявол в мелочах. Рекомендую к прочтению, есть вероятность такой вопрос встретить в будущем на собеседованиях.
🔥18👍2
Специализация по Data Engineering на Coursera

29 августа 2024 года на учебной платформе Coursera стартует специализация по дата инжинирингу от DeepLearning.AIDeepLearning.AI Data Engineering Professional Certificate. Инструктором на курсах будет Joe Reis, известный в узких кругах как автор книги Fundamentals of Data Engineering, издательство O'Reilly.

Обучение рассчитано на 3 месяца, целевая аудитория Intermediate-level специалисты. В специализацию входит 4 курса:

— Introduction to Data Engineering
— Source Systems, Data Ingestion, and Pipeline
— Data Storage and Queries
— Data Modeling, Transformation, and Serving

Обучение платное как и большинство специализаций на Coursera, но есть возможность залететь на trial-период, он поможет понять стоит ли продолжать обучение дальше или сделать dropout.

Более подробно о программе узнайте по ссылке.
👍10🔥9💯3
GIL и Python

Python, пожалуй, самый популярный язык программирования в дата инжиниринге несмотря на то, что его постоянно ругают за производительность и обжорство. Свои позиции он не сдал чего не скажешь, например, о Scala ☠️

Python своей "тормознутостью" отчасти обязан некогда архитектурному решению под названием GIL. Многие слышали эту аббревиатуру, но не все знают причину по которой появился GIL и как он работает под капотом. Если вам это интересно, то держите отличный доклад на русском языке: Зачем нужен GIL и как от него избавиться? от Евгения Афанасьева.

В Python версии 3.13, релиз которой будет уже в октябре, добавили опциональную возможность отключить GIL 😲, нюансы описаны в PEP-703. И про это есть в докладе у Евгения.

В общем, must watch
👍16🔥8💯4
Релиз Apache Airflow 2.10

Сегодня вышел релиз новой версии Apache Airflow — 2.10. Не успел я ещё перейти на 2.9, а нам подогнали 2.10. Что нового?

@skip_if и @run_if декораторы, позволяющие задавать условия при которых следует запускать или пропускать`task`
— появилась возможность задавать разный Executor для tasks в рамках одного DAG
— Датасеты отныне не триггерят DAGs, находящиеся в состоянии paused
Важно! Начиная с версии 2.10 Airflow по-умолчанию собирает телеметрию в рамках Open Source Marketing, все данные передаются в систему аналитики Scarf. Чтобы отключить, необходимо задать в конфиге [usage_data_collection]enabled=False либо через переменную окружения SCARF_ANALYTICS=false

С полным списком изменений можно ознакомиться по ссылке.
🔥22👍14💯6
Мудрые слова!

А что думаете вы? Я на практике также стараюсь максимально избегать распределенных транзакций, т.к. это сразу значительно усложняет систему.

Наиболее популярные паттерны распределенных транзакций:

Saga Pattern
2-Phase Commit
🔥8👍7💯3
Недавно я постил доклад про GIL и его отключение в будущих версиях Python. Вчера же на канал PyCon US загрузили доклад от Юры Селиванова про сабинтерпретаторы: Overcoming GIL with subinterpreters and immutability. Это один из вариантов улучшения производительности Python без отключения GIL. Я сам не сторонник удаления GIL, т.к. параллельное выполнение потоков потребует от программиста следить за их синхронизацией, чем собственно сейчас занимается GIL (он же mutex), поэтому интересно было послушать его доклад.

Для тех, кто в танке, PEP 734 описывает работу сабинтерпретаторов, релиз этой библиотеки планировался в составе Python 3.13, но, к сожалению, Steering Council в апреле этого года решил не включать модуль interpreters в stdlib, мотивировав тем, что модулю надо "настояться" в качестве отдельного PyPI пакета. Решение не осуждаю, поэтому пробуйте его на вкус через pip, правда работает только с 3.13+.
🔥9👍4💯3