Airflow для менеджеров
В Ariflow 3.1 появилась группа hitl-операторов, которая позволяет что-то вводить пользаку во время работы дага
🫠 Что делает пример на картинках?
Мы задаем даты, выбираем сервисы из списка, вводим почту и получаем отчет. Операторы по сути помогают менеджерам не дергать DA/DE своими адхоками, а пойти самому накликать и выгрузить то, что нужно
🤓 А как это происходит?
В базовых примерах после разворачивания airflow появится даг
🤩 HITLOperator — выбрать одну или несколько опций из списка
🤩 HITLEntryOperator — ввести любой текст
🤩 HITLBranchOperator — выбрать следующую таску
🤩 ApprovalOperator — одобрить или отклонить
В коде выглядит это вот так:
Когда заходите в UI, после запуска дага появляется доп вкладка
Из xcom потом можно достать в других тасках. Сначала обращаетесь по названию таски, а потом работаете, как с обычным словарем:
Use case очень прикольный. Интересно, а вот на практике этим будут пользоваться?
@data_engineerette
В Ariflow 3.1 появилась группа hitl-операторов, которая позволяет что-то вводить пользаку во время работы дага
HITL = Human-in-the-loop
Мы задаем даты, выбираем сервисы из списка, вводим почту и получаем отчет. Операторы по сути помогают менеджерам не дергать DA/DE своими адхоками, а пойти самому накликать и выгрузить то, что нужно
В базовых примерах после разворачивания airflow появится даг
example_hitl_operator. Там есть несколько операторов из пакета airflow.providers.standard.operators.hitl:В коде выглядит это вот так:
wait_for_multiple_options = HITLOperator(
task_id="wait_for_multiple_options",
subject="Please choose option to proceed: ",
options=["option 1", "option 2", "option 3"],
multiple=True,
defaults=["option 1"],
)
Когда заходите в UI, после запуска дага появляется доп вкладка
Required Actions (1), где и нужно прожать опцию. Это все потом отправляется в xcom:
{
"params_input": {},
"responded_at": "datetime.datetime@version=2(tz=(UTC,pendulum.tz.timezone.Timezone,1,True),timestamp=1778505898.269782)",
"chosen_options": [
"option 2",
"option 3"
],
"responded_by_user": {
"id": "1",
"name": "airflow"
}
}
Из xcom потом можно достать в других тасках. Сначала обращаетесь по названию таски, а потом работаете, как с обычным словарем:
{{ ti.xcom_pull(task_ids='wait_for_multiple_options')["chosen_options"] }}
{{ ti.xcom_pull(task_ids='wait_for_input')["params_input"]["information"] }}
Use case очень прикольный. Интересно, а вот на практике этим будут пользоваться?
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤16🔥9👍8
Познакомилась с деврелом из OpenMetadata
В последнем спринте работала над таской, связанной с OpenMetadata. Она была поначалу настолько непонятой, что пришлось присоединиться к коммьюнити в Slack🤩
Могу сказать, что у них просто офигенная поддержка в чате, на вопросы они отвечают в течение получаса. Как только я присоединилась, на меня сразу вышел чел с ролью «Developer Advocate». Он рассказал, что у них происходит в чатах, какие они организуют вебинары и что можно забукать небольшую встречку
Поначалу я скептически отнеслась, вопросов с моей стороны не было, да и вообще потом забыла, но спустя время решила встретиться поболтать🙂 Мы довольно мило побеседовали про наше использование инструмента, про их новые фичи. Он мне рассказал, что в последней версии:
🤩 джобы запускаются не в airflow, а стартуют отдельные поды в k8s
🤩 поддерживается дата-контракты
Дата-контакты в OMD — это как второй этап проверки. Мы однажды напоролись на такое, что данные вставлялись без проблем даже при изменении схемы на источнике. Потому что мы в коде брали из датафрейма только столбцы, которые уже были в таргет-таблице🙂
Дальше мы пошли в сендбокс. Посмотрели, как дата-контракты поддерживают изменения схемы, data quality, штуки для безопасности (все, что на скрине). Контракты можно импортнуть и экспортнуть в формате ODCS (Open Data Contract Standard)
Еще мне рассказали, что OpenMetadata стартанула всего лишь 5 лет назад! А 10.06 у них будет бесплатный онлайн-саммит Collate Summit '26: Data & AI in Production, на который можно зарегаться
После встречи деврел прислал несколько полезных ссылочек, которые мы обсуждали:
📍 OpenMetadata’s Kubernetes Scheduler Preview
📍 Data Contracts and OpenMetadata
📍 OpenMetadata Standards & Building new Connectors with AI
📍 OpenMetadata Standards
@data_engineerette
В последнем спринте работала над таской, связанной с OpenMetadata. Она была поначалу настолько непонятой, что пришлось присоединиться к коммьюнити в Slack
Могу сказать, что у них просто офигенная поддержка в чате, на вопросы они отвечают в течение получаса. Как только я присоединилась, на меня сразу вышел чел с ролью «Developer Advocate». Он рассказал, что у них происходит в чатах, какие они организуют вебинары и что можно забукать небольшую встречку
Поначалу я скептически отнеслась, вопросов с моей стороны не было, да и вообще потом забыла, но спустя время решила встретиться поболтать
Дата-контакты в OMD — это как второй этап проверки. Мы однажды напоролись на такое, что данные вставлялись без проблем даже при изменении схемы на источнике. Потому что мы в коде брали из датафрейма только столбцы, которые уже были в таргет-таблице
Дальше мы пошли в сендбокс. Посмотрели, как дата-контракты поддерживают изменения схемы, data quality, штуки для безопасности (все, что на скрине). Контракты можно импортнуть и экспортнуть в формате ODCS (Open Data Contract Standard)
Еще мне рассказали, что OpenMetadata стартанула всего лишь 5 лет назад! А 10.06 у них будет бесплатный онлайн-саммит Collate Summit '26: Data & AI in Production, на который можно зарегаться
После встречи деврел прислал несколько полезных ссылочек, которые мы обсуждали:
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥8 2
На пути к гуру алгосов
01.06 стартует новый поток курса от Глеба Михайлова, и я на него иду! Алгосы — это точно мое слабое место, и я прямо в превкушении почувствовать «азарт охотника, а не ужас жертвы»🐆
Я уже зарегалась на платформе, добавилась в чатик и посмотрела орг материалы — какой должен быть подход к обучению, нужно ли быть перфекционистом и как трекать свой прогресс
Курс разбит на 10 спринтов вплоть до 11.10. И ожидается, что мы должны уделять время на задачи 5 дней в неделю целое лето😭 😭
Скоро я эволюционирую до всезнающего леопарда, ну, а пока я — маленькая птичка, которая полетела разведывать остров алгоритмов🐦
@data_engineerette
01.06 стартует новый поток курса от Глеба Михайлова, и я на него иду! Алгосы — это точно мое слабое место, и я прямо в превкушении почувствовать «азарт охотника, а не ужас жертвы»🐆
Я уже зарегалась на платформе, добавилась в чатик и посмотрела орг материалы — какой должен быть подход к обучению, нужно ли быть перфекционистом и как трекать свой прогресс
Курс разбит на 10 спринтов вплоть до 11.10. И ожидается, что мы должны уделять время на задачи 5 дней в неделю целое лето
Скоро я эволюционирую до всезнающего леопарда, ну, а пока я — маленькая птичка, которая полетела разведывать остров алгоритмов🐦
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
leopard.school
Курс по алгоритмам с Глебом Михайловым
50 часов видео, 241 задача с LeetCode, 500+ студентов.
🔥11 5😁4😭2
Случайно замедлили все загрузки
Небольшая история о том, как можно ухудшить состояние кластера, не добавив и строчки кода😁
Предыстория
У нас в airflow есть много дагов, которые качают данные из бд. Чтобы не положить базу, мы используем пулы, которые ограничивают количество подключений
Как-то мы реализовали новый тип загрузки и, как порядочные разрабы, про пулы тоже не забыли. Долгое время данные грузились, все работало — с этой стороны не было проблем. Но однажды к нам пришел аналитик и спросил, почему таски висят в статусе scheduled по несколько часов. И вот тогда мы поняли😁
Проблема
Таска-загрузчик находилась в одной таск-группе вместе с другими легковесными тасочками. И они все наследовали одни и те же значения! Получается, что таске передавалось 100500 слотов, даже если она вообще не ходила в базу😱 И когда загрузчик требовал много слотов, абсолютно все простаивало, потому что больше ничего не помещалось😱 😱
Решение
Тут все просто: выпилить параметр из тех тасок, где он не нужен
Мораль
Можем подытожить так: даже если все зеленое и все считается, это не значит, что все хорошо🤨
@data_engineerette
Небольшая история о том, как можно ухудшить состояние кластера, не добавив и строчки кода
Предыстория
У нас в airflow есть много дагов, которые качают данные из бд. Чтобы не положить базу, мы используем пулы, которые ограничивают количество подключений
Как-то мы реализовали новый тип загрузки и, как порядочные разрабы, про пулы тоже не забыли. Долгое время данные грузились, все работало — с этой стороны не было проблем. Но однажды к нам пришел аналитик и спросил, почему таски висят в статусе scheduled по несколько часов. И вот тогда мы поняли
Проблема
Таска-загрузчик находилась в одной таск-группе вместе с другими легковесными тасочками. И они все наследовали одни и те же значения! Получается, что таске передавалось 100500 слотов, даже если она вообще не ходила в базу
Решение
Тут все просто: выпилить параметр из тех тасок, где он не нужен
Мораль
Можем подытожить так: даже если все зеленое и все считается, это не значит, что все хорошо
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15👍6❤2🔥2💅1
ClickOps
Мне тут пришло в голову покопаться в сервисах AWS и поделать какие-нибудь лабы. На ютубе довольно много видосов от индусов (и не только) на эту тему, я в итоге решила посмотреть вот этот 4х-часовой туториал с пет-проектом
🎙 Там парень очень понятно рассказывает про теорию и сервисы, показывает, как что делать. К акценту надо привыкнуть, но вроде норм) Говорит он супер быстро, как будто на x1.5 смотришь. Одна из фраз, которая красной линией проходит по видосу:
Еще сайтец у него есть полезный, там очень много инфы собрано
💻 В чем суть проекта? Взять данные из файлов и API, залить в S3, переложить по слоям, добавить dq, настроить алерты, собрать витрину и поставить на расписание. Используя тех стек AWS: S3, Glue, Lambda, Athena, Step Functions, CloudWatch, SNS
Вся эта история поместилась в 5 питонячих файлов и 4 джейсонины. Поэтому проект натолкнул меня на несколько логичных мыслей, но над которыми я не задумывалась:
1️⃣ Девопсы вообще не нужны — все и так настроено и работает
2️⃣ Платформенные решения, фреймворки для витрин тоже не нужны — достаточно написать одну Glue-джобку и запускать ее с разными конфигами
3️⃣ Основная работа DE — нажимать на кнопочки и заполнять формочки
Создать таблицу? 4 клика
Загрузить csv в таблицу? 6 кликов
Добавить поле? Перетащить прямоугольничек
Партицировать таблицу? Выбрать колонку из списка
Выделить инкремент для загрузки? Включить опцию
Оно примерно так и есть, или я пока что-то упускаю?
@data_engineerette
Мне тут пришло в голову покопаться в сервисах AWS и поделать какие-нибудь лабы. На ютубе довольно много видосов от индусов (и не только) на эту тему, я в итоге решила посмотреть вот этот 4х-часовой туториал с пет-проектом
Сейчас никто не пишет код сам. Если вы хотите что-то реализовать или столкнулись с проблемой — идите к ChatGPT
Еще сайтец у него есть полезный, там очень много инфы собрано
Вся эта история поместилась в 5 питонячих файлов и 4 джейсонины. Поэтому проект натолкнул меня на несколько логичных мыслей, но над которыми я не задумывалась:
Создать таблицу? 4 клика
Загрузить csv в таблицу? 6 кликов
Добавить поле? Перетащить прямоугольничек
Партицировать таблицу? Выбрать колонку из списка
Выделить инкремент для загрузки? Включить опцию
Оно примерно так и есть, или я пока что-то упускаю?
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8💅8
AI-эра тех собесов
💻 Теперь вместе с sql/python-задачками на тех собесе могут дать создание мини-проекта за 20 минут
Разрешается использовать все, что угодно, любые ллм. (Только подумайте над тем, что будет работать, когда вы на созвоне на внутренней платформе.) Есть только одно условие — шерить экран
Примеры заданий
➡️ Для де: написать ddl таблиц, sql-запросы по сборке витрин, несколько дагов
➡️ Для разраба: придумать архитектуру микросервиса и реализовать его
➡️ Разобраться в коде и найти баги
Сгенерили, а дальше?
🙂 Интервьюеры могут сами пока не до конца понимать, что делать после генерации кода) Они просто сидят и смотрят, как ты будешь разбираться, что происходит, просят внести правки или объяснить кусок кода
Пока такое замечено в WB в последние 2 месяца, но могут подтянуться и остальные. Особенно после этого поста😁
@data_engineerette
Разрешается использовать все, что угодно, любые ллм. (Только подумайте над тем, что будет работать, когда вы на созвоне на внутренней платформе.) Есть только одно условие — шерить экран
Примеры заданий
Сгенерили, а дальше?
Пока такое замечено в WB в последние 2 месяца, но могут подтянуться и остальные. Особенно после этого поста
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔21🔥16❤7😁4
Hive vs HMS
Я долгое время вообще не знала про существование HMS. Для меня HMS и Hive шли неразрывно, и я не отличала одно от другого. Я же такая не одна, да?🌸
Но в один момент до меня дошло, что:
🤩 Hive - это движок, который через синтаксис SQL (HiveQL) умеет ходить к данным. Мы пишем запросы как будто в обычной бд, но они становятся MapReduce/Tez/Spark задачами и ходят в файлики
🤩 HMS - это каталог метаданных: схема таблиц, пути к файлам, типы данных, партиции и т.д. Ему для работы нужна бд. Чаще всего это PostgreSQL, MySQL
Для работы Hive обязательно нужен HMS
А вот сам HMS может использоваться и отдельно - с тем же Spark, Trino, Impala
🧊В контексте Iceberg мы используем HMS как технический каталог. Например, чтобы понимать, что таблице db.orders соответствует файл 000-asdkd27sn.metadata.json
Подробнее про внутрянку hms я рассказывала здесь
Про каталоги — тут
@data_engineerette
HMS - Hive Metastore
Я долгое время вообще не знала про существование HMS. Для меня HMS и Hive шли неразрывно, и я не отличала одно от другого. Я же такая не одна, да?
Но в один момент до меня дошло, что:
Для работы Hive обязательно нужен HMS
А вот сам HMS может использоваться и отдельно - с тем же Spark, Trino, Impala
🧊В контексте Iceberg мы используем HMS как технический каталог. Например, чтобы понимать, что таблице db.orders соответствует файл 000-asdkd27sn.metadata.json
Подробнее про внутрянку hms я рассказывала здесь
Про каталоги — тут
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
дата инженеретта
Разбираемся в каталогах
Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам
Трино
Каталог - это конфиги для подключения к разным источникам данных…
Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам
Трино
Каталог - это конфиги для подключения к разным источникам данных…
🔥9👍7 6❤2
Data + AI
🍿 Вчера-сегодня проходит Data + AI Summit от Databricks. Основная суть — как работать с данными в эру AI, реклама собственных разработок, интервью с партнерами и крупными пользователями, кейсы применения сервисов
Меня больше всего поразило — как они красиво говорят, у них такая чистая четкая речь и акцент, как на аудировании😍 И больше 30к людей в офлайне!!
Есть очень много интересных моментов, которые я пометила себе:
🤩 Аннонсировали Lakehouse//RT на собственном движке Reyden, который возвращает результат на огромном объеме данных за мс и не требует перекладки данных в отдельную бд под дэши (красивые графички тут) ✨ ✨
🤩 Обсуждали Lakebase — это постгря как движок над s3. Чтобы опять-таки хранить данные в одном месте, а не перекладывать из OLTP в OLAP-системы🤪
🤩 LTAP (Lake Transactional/Analytical Processing) = Lakebase + Lakehouse. Данные пишутся строками => строки конвертятся в столбцы => чтение по столбцам. Правда, нам не сказали, насколько эта конвертация затратна❓
🤩 На сцене побывал Ryan Blue, один из главных создателей Iceberg. Он сказал, что в Databricks уже поддерживается iceberg v3, где одна из фич — это кросс-поддержка iceberg+delta lake, которые на диске лежат одинаково, и не надо ничего переписывать при смене формата. А к концу q4 или чуть позже уже выйдет iceberg v4
🤩 Genie One + Genie Ontology — чат-бот, дополненный глоссарием/знаниями предметной области компании на основе графов + коннектов к гугл драйв/почте/и т.д. А еще он умеет чекать пермишены к данным перед тем, как вернуть ответ. А агентов можно шерить с коллегами✨
🤩 Добавляется отдельный агент Genie ZeroOps, который постоянно следит за кластером. Если в 2 часа ночи упал пайплайн, он пойдет искать причины по линейджу всех зависимостей, внесет изменения в код, потестит в песочнице, подготовит фикс и отправит алерт о готовности. Вам остается только аппрувнуть✨ ✨
🤩 Omnigent — платформа, где можно миксовать несколько моделек, чтобы они делали разные операции. Это называется "meta-harness"
🤩 В Uber за 1 квартал потратили годовой бюджет на AI
🤩 Pepsico — один из пользаков, у которых раньше было 600 дата лейков😳
🤩 Databricks заколлабились с OpenAI (приходил кофаундер Greg Brockman), чтобы их модельки забустили дата-сервисы
@data_engineerette
Меня больше всего поразило — как они красиво говорят, у них такая чистая четкая речь и акцент, как на аудировании
Есть очень много интересных моментов, которые я пометила себе:
@data_engineerette
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4💅4 2
Пойдемте прокачиваться
🧐 Кажется, многие айтишники в какой-то момент приходят к одной мысли: хочется не только писать код и закрывать задачи, но и делиться опытом, влиять на развитие профессии и видеть результаты своей работы в людях
Чтобы это все реализовалось, в Центральном университете придумали фаст-трек для будущих преподавателей направления «Разработка»
Всего за одни выходные, 27 и 28 июня, вы пройдете основные этапы найма:
📍 техническое интервью с действующим преподавателем
📍 пробное 20-минутное занятие
Что такое Центральный университет?
Это вуз нового типа, открытый при поддержке Т-Банка, Яндекса, Авито и более 60 других партнеров. Здесь преподают более 600 специалистов из ИТ-индустрии и преподавателей ведущих университетов страны, а учатся более 2200 студентов.
Что важно:
✨ преподавание можно совмещать с основной работой
✨ подберут удобное расписание
✨ опыт преподавания необязателен, подойдет любой софтовый, например, менторство или выступления на митапах
✨ на старте все расскажут и подскажут
Кого ждут:
📍 мидлов с уверенными знаниями Python, Java или фронтенд-разработки
📍 сеньоров в инфраструктуре, инжиниринге данных и архитектуре решений
📍 Встречаемся 27–28 июня, онлайн и в кампусе Центрального университета (м. «Маяковская»)
Регаемся тут до 24 июня
Чтобы это все реализовалось, в Центральном университете придумали фаст-трек для будущих преподавателей направления «Разработка»
Всего за одни выходные, 27 и 28 июня, вы пройдете основные этапы найма:
Что такое Центральный университет?
Это вуз нового типа, открытый при поддержке Т-Банка, Яндекса, Авито и более 60 других партнеров. Здесь преподают более 600 специалистов из ИТ-индустрии и преподавателей ведущих университетов страны, а учатся более 2200 студентов.
Что важно:
Кого ждут:
Регаемся тут до 24 июня
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🌚1
Раскрываю тайну
Наверняка у многих был такой момент, что вы заходите в YARN, находите Hive-запрос, хотите в него провалиться, но Tez UI недоступен?
Теперь вы знаете, как он выглядит
@data_engineerette
Наверняка у многих был такой момент, что вы заходите в YARN, находите Hive-запрос, хотите в него провалиться, но Tez UI недоступен?
Теперь вы знаете, как он выглядит
@data_engineerette
🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁44😭8❤5
Системный аналитик помогает бизнесу и разработке говорить на одном языке: разбирает задачи компании, описывает требования, проектирует IT-решения и следит, чтобы система работала на реальные цели бизнеса.
Онлайн-магистратура СПбГУ и Нетологии «Системный анализ и интеллектуальные системы управления бизнес-процессами» готовит специалистов на стыке IT и управления.
В программе сочетаются академическая база СПбГУ и прикладные инструменты Нетологии. Студенты изучают математическое моделирование, алгоритмы, системный анализ, Python, BI-системы, no-code-инструменты, управление проектами и подходы к внедрению искусственного интеллекта.
Такой набор навыков помогает работать со сложными бизнес-процессами: находить узкие места, снижать риски при разработке, формулировать требования к системам и сопровождать внедрение IT-решений.
Обучение проходит полностью онлайн. После выпуска вы получаете диплом магистра СПбГУ очного образца по направлению «Прикладная информатика».
Подробнее о программе
Реклама. ООО “Нетология” ОГРН 1207700135884 Erid: 2VSb5yo9LAn
Онлайн-магистратура СПбГУ и Нетологии «Системный анализ и интеллектуальные системы управления бизнес-процессами» готовит специалистов на стыке IT и управления.
В программе сочетаются академическая база СПбГУ и прикладные инструменты Нетологии. Студенты изучают математическое моделирование, алгоритмы, системный анализ, Python, BI-системы, no-code-инструменты, управление проектами и подходы к внедрению искусственного интеллекта.
Такой набор навыков помогает работать со сложными бизнес-процессами: находить узкие места, снижать риски при разработке, формулировать требования к системам и сопровождать внедрение IT-решений.
Обучение проходит полностью онлайн. После выпуска вы получаете диплом магистра СПбГУ очного образца по направлению «Прикладная информатика».
Подробнее о программе
Реклама. ООО “Нетология” ОГРН 1207700135884 Erid: 2VSb5yo9LAn
😭1