дата инженеретта – Telegram
дата инженеретта
2.98K subscribers
242 photos
28 videos
3 files
101 links
мелкое — крупно,
в глубоком разговоре
мудрость приходит

по вопросам сюда: @aigul_sea
Download Telegram
Data Internals

Я сходила на конфу "Data Internals", где потусовалась еще с парочкой де админов🕺 Как здорово, когда есть люди, которые могут выбить тебе проходку🙂 Мы послушали про дата каталоги, self-service инструменты, про clickhouse, lakehouse, сходили на два круглых стола и покушали)

Активности вне докладов были прикольными: кроссворд и ребусы на английском(!), головоломки из металла, соревнование на реакцию, разбрасывание типов файлов по ведрам (в прямом смысле!) и даже гадание на таро🙂

С таро был прикольный момент. Я задала вопрос на тему перспектив развития в компании. Мне выпала карта "The Data Priestess" - главная по данным, порекомендовали идти в лиды)) Предположительно в течение года. Не знаю как насчет года, но в плане обучения я двигаюсь в правильном направлении)

Через несколько часов я решила снова туда подойти и задать вопрос по поводу развития личной жизни. Мне снова говорят сдвинуть карты и вытащить одну. Я четко понимаю, что мне хочется вытащить вторую сверху. Я ее выстаскиваю - и там снова жрица!😂 В общем, надо все брать в свои руки, тогда будет четенько)

По итогу активностей я обменяла баллы на термокружку, бутылочки, походную розетку, парковочную визитку (хотя у меня нет тачки😁) и светильник-облачко)

Народу было немного, около 400 человек. Конфа как таковая не очень интересная: были как лайтовые доклады, так и очень низкоуровневые, круглые столы тоже нас не всколыхнули( Только задала парочку вопросов на докладе про self-service оркестрацию в лемана тех - единственное, что более-менее заинтересовало, потому что у нас нечто очень похожее (картинку архитектуры решения докину в комменты)
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥4😁3💅2
Как я чуть не попалась на мошенников

Предыстория

👢В конце августа в Казани проходил «Сенной базар», где локальные бренды выставляют свою продукцию. Мне очень понравился один бренд из Тюмени, одежда ручной работы, и я некоторое время общалась с его владелицей. Потом она не прочитала мой вопрос, я написала еще раз через пару недель - снова не прочитала. Но я уже запланировала покупку, поэтому решила написать в чат тг канала

Краткое продолжение

Мне пишут с аккаунта «<Название бренда> Chat». Акк создан в апреле 2025, сам бренд тоже относительно новый, около 1,5 лет. Общение очень вежливое, со скобочками и сердечками в меру. Ниже просто тезисно:

Что я хотела заказать? Не видели мое сообщение, продублируйте
Первый звоночек - можно же найти переписку со мной? ну ок, далеко листать или пишет ассистенка

Какой размер нужен?
Второй звоночек - размер для платья, которое шьется под заказ? сомнительно, но окей, вдруг есть какие-то заготовки, замеры все равно нужны

Пришлите данные для доставки. Я в ответ спрашиваю про сроки - до недели
Третий звоночек - сшить под меня и доставить до недели? ну…. по-до-зри-тель-но. пока допустим, учитывая предыдущий вопрос про размер

Соориентировать ли по стоимости? Оплата сразу
Четвертый звоночек - я смотрю на цены и понимаю, что они раза в 2-3 дешевле, чем я видела в инсте и на оф сайте. "Реальная себестоимость должна быть еще ниже тогда? Они больше, чем в 4 раза что ли делают надбавки? Или это персональная скидка за личное знакомство и большое количество вещей?"

Тут мне пишет владелица и говорит, что чат со мной случайно оказался в архиве
Финальный колокол - я смотрю на список чатов и вижу, как параллельно пишут в два из них

〰️〰️〰️〰️〰️

Выяснилось, что к бренду этот акк никакого отношения не имеет. Я их довела до ссылки на оплату, по СБП, в течение 10 минут. Мне прислали длинную ссылку, я перепроверила на фишинг и вирусы раз 5 на разных сайтах)) Открыла в инкогнито, увидела огромный куар с инструкцией отсканировать с телефона - и заблочила акк

Еще я вспомнила, что тестила функцию с чатом канала один раз, и там была плашка DIRECT рядом с названием, но это было еще в начале лета. К слову, в профиле мошеннического акка не было никаких ссылочек. Я вот теперь сомневаюсь, а можно ли вообще писать от имени чата, а не канала?

В общем, я не слышала про такую схему и уже готова была подтверждать после выяснения моих вопросов, если бы владелица не написала в тот самый момент

Я что-то упустила?
Берегите себя 🧡
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍158💅1🤷1
Как мониторить подвисшие сенсоры?

Начнем с того, что в Airflow есть несколько состояний для таски:

⭐️none - пока отдыхает
⭐️scheduled - должна быть запущена, все зависимости выполнены
⭐️queued - ждет свободный воркер
⭐️running - работает
⭐️success - успешно завершилась
⭐️restarting - перезапустили
⭐️failed - упала
⭐️skipped - пропущена
⭐️upstream_failed - упала предыдущая таска, которая нам нужна
⭐️up_for_retry - упала, но будет перезапущена
⭐️up_for_reschedule - сенсор будет перезапущен
⭐️deferred - отложена и ждет триггер
⭐️removed - удалена из дага после запуска

Подвисшие сенсоры уходят в статус deferred. У нас они имеют такой нейминг - mytask_awaiting_somedag. Я написала себе запрос, который выводит:

⭕️название дага, на который смотрит сенсор
⭕️количество сенсоров, которые ждут этот даг
⭕️общее количество подвисших сенсоров

И так можно сразу понять, на какой даг смотрит наибольшее количество сенсоров, и посмотреть причину


with sensored as (
SELECT
substr(
task_id,
strpos(task_id, 'awaiting_') + length('awaiting_')
) as sensor,
dag_id
FROM airflow.public.task_instance
WHERE state = 'deferred'
)
select
sensor,
count(1) over(partition by sensor) as sensor_cnt,
count(1) over() as total_cnt,
dag_id
from sensored
order by 2 desc, sensor, dag_id;
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍22🔥65
Я сделала стикеры😎

Версия 1.0

Давно была мысль придумать свой стикерпак, и вот я ее реализовала🙌 Если бы я знала, сколько знаний и умений это потребует, то не стала бы так возиться))

Пару дней накидывала в заметках кучу идей. А потом пришлось осваиваться в графическом дизайне. Это просто нечто🤯🤯 Я сидела все выходные и выясняла:
🤩как работать со слоями?
🤩как выровнять картинки с текстом?
🤩как поправить кривые, чтобы они выглядели норм?
🤩что такое тип узла?
🤩как сделать изогнутый текст?
🤩как нарисовать форму вокруг всего текста, а не отдельных буковок?
🤩как перевести текст в кривые?
🤩как объединить элементы?
🤩как сделать обводку?
🤩как сделать поля наклеек?
🤩как нарисовать контур реза и какого цвета?
🤩в каком масштабе сохранять?
🤩как соотносятся пункты и мм?
🤩какими делать поля документа?

🤩Хотелось несколько раз бросить это дело, потому что я никак не могла найти инфу и функционал в проге. Но что-то двигало меня вперед🤩

А еще приходилось гуглить “что такое плоттерная резка”, внимательно читать требования к стикерпаку, вымерять расстояния линеечкой, переделывать готовый стикерпак под нужный масштаб и кучу раз менять расположение, чтобы все поместилось и не порезалось. В итоге 80% идей остались за бортом, некоторые уже реализованные элементы пришлось вырезать на этапе аппрува от типографии😭

Потом забрать цветопробу, заплатить денежку (20 штук - 6к, тоже как бы недешево), забрать финалочку в день отъезда на конфу и вуаля🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
249🔥6👍3
Как прошла SmartData 2025?

Это были 2 дня конфы в Питере - доклады, тусовка крутых ребят, активности и обсуждения. Ниже будут инсайты от оргов, команд и почему я просто обязана поехать в следующем году!

📚 Доклады

В одно время идут сразу 3 доклада, поэтому большинство осталось за кадром. Тут топ из тех, которые я посетила:

1️⃣Текущее состояние рынка даты
Presto/Trino + K8s + S3, Iceberg, StarRocks, Polars - движется сюда

2️⃣ Куда развивается айсберг
Из продвинутого - мат вьюшки, UDF, интероперабельность вьюшек и т.д.
Поясняю про вьюшки:
Spark создает - Spark читает - ок🤩
Trino создает - Trino читает - ок 🤩
Trino создает - Spark читает - не ок 🤩, а должно быть ок (наоборот тоже)

Также есть глобальная проблема: в айсберге фичу могут внедрить, но пройдет много времени, пока движок научится это поддерживать

3️⃣ Про датасеты в Airflow
Все супер понятно, с несколькими кейсами, проблемами и решениями. Я взяла контакт, нам может пригодиться

4️⃣ Spark Connect
Как раз недавно коллега вкидывал идею использовать Spark Connect для одной задачи, надо будет пересмотреть

5️⃣ Self-service для деплоя витрин в Авито
Тут вообще приколдесная штука, они в битбакете в комментах пишут команды dwh test, dwh merge, это проверяют кучи тест-кейсов, есть автоопределение зависимостей, циклических зависимостей. С точки зрения идеи и реализации мне кажется безумно крутым, но вопрос - оно действительно нужно было?

6️⃣ DQ as a Service
Интересные фичи:
⁃ проверки группируются, чтобы не спамить каждую
⁃ проверки на месяц могут ссылаться на проверки по дню, чтобы не пересчитывать заново
⁃ ETL-процесс отправляет свой результат, чтобы проверка его переиспользовала
⁃ некоторые проверки на сэмплах данных могут не отличаться от всего объема

Уходя в первый день, я услышала мнение:

SmartData - это, значит, очень клевое место, если народ в начале докладов разбегается по залам. Это говорит об уровне конфы


🐱 Нетворкинг

Тут самое прикольное!

Я пообщалась с представителем программного комитета, с ребятами из компаний по поводу их подходов, вживую познакомилась с нашими коллегами, с еще одним автором де канала и его очень крутыми коллегами. Меня даже узнали несколько человек, сказали, что один из адекватных каналов 🙂

Чел из программного комитета поделился, что докладов изначально в 3 раза больше, они ценят уникальность (без написанных статей с хабра и повторов с других конф). Если определенных технологий нет - были слабенькие доклады. Иногда программный комитет хочет сходить на несколько докладов и расставляет так, чтобы они не пересекались))

Активности и инсайты

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

Игрулек было достаточно, я набрала себе столько мерча, что уже можно продавать)) Из полезного:

🤩Бросала магнитные дротики. Куда попадешь - такая сложность вопроса, берите на заметку)

Junior:
SQL-запрос для дубликатов?
Зачем нужны индексы в бд?

Middle:
Как вы настроите мониторинг для пайплайна, чтобы знать, если данные не пришли вовремя?
Как обеспечить идемпотентность в пайплайне?

Senior:
Как вы оцените, когда пора переходить от batch-обработки к streaming-архитектуре?

🤩Собирала архитектуру

Это было самое прикольное! Мы клали в реальную корзину реальные технологии и шли сканировать на кассу. Представьте: я купила айсберг. А если вы не знали, то Магнит выкупил Азбуку вкуса

Пока собирала архитектуру в Х5, ребята рассказали про крутую собственную разработку. У них много инстансов Airflow, и они синкуются через Redis - там хранятся статусы о состояниях дагов, на которых строятся зависимости. Это просто 🔥

🍓 На сладенькое

В конце был глобальный розыгрыш сумки с мерчом от партнеров и билета на следующий год. Представляете, это выиграла я!!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥221311
5. Лидерство в команде

Продолжаю рассказывать про курс команды, и это последний модуль 🥲
Четвертый модуль - тут
Описание программы - тут

Темы, которые мы разобрали:

🤩что такое лидерство
🤩теории лидерства (личностная, поведенческая, ситуационная, организационно-ролевая)
🤩работа с приоритетами (матрица Эйзенхауэра, метод ABC)
🤩способы принятий решений (проблемно-ориентированный, результат-ориентированный, авторский/лидерский, генеративно-критериальный, эволюционный)
🤩личный бренд руководителя команды
🤩теория по очень сложным фреймворкам (Human System Dynamics, Warm Data Labs)

Нам в лидерах нравится то, что мы в каком-то виде имеем в себе
Бренд руководителя - это истории, которые про нас знают


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

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

В ходе разбора рыбы Исикавы по косточкам мы выяснили, что:

🤩нет 1:1 и обратной связи
🤩нет точек контроля
🤩нет четкой постановки задач
🤩у задач нет оценки
🤩у задач нет дедлайна
🤩джун понимает, что задачи несрочные и неважные

В общем, диаграмма позволяет понять причины, причины причин и т.д. В конце мы обсудили разные сценарии решения и вариант "А что если не решать?" Это тоже как один из подходов к решению

Книги, которые я себе записала:

📒Маршалл Голдсмит, Марк Рейтер "Триггеры"
📒Тимоти Феррис "Как работать по 4 часа в неделю и при этом не торчать в офисе «от звонка до звонка», жить где угодно и богатеть"

Ну вот и все, выпускной тоже прошел - пообщались с однокурсниками, преподами и получили дипломы🐸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥119💅2
Что с нами станет?

На днях зашла в линкедин, и первый пост в ленте был от европейского стартапа. В посте приветствовали нового коллегу - моего контакта (назовем его Паша)

🎹 С Пашей я познакомилась на 2м курсе, когда увидела афишу фортепианного вечера, а он оказался ее оргом. Лайнап артистов уже был собран, но я все-таки напросилась, и мы какое-то время хорошо общались

Я помню Пашу, когда он учился на мехмате, потом наши пути не пересекались. Оказалось, что он получил степень магистра геометрии, а два года назад уехал в Италию учиться на второй маге по ИИ

🍕 Так вот в посте сказано, что он работал бизнес-аналитиком, а потом перешел на AI Engineer/AI Specialist. Я сходила к Паше за краткой пояснялкой этой профессии:

По существу, разработчик AI архитектур. Соединять, оркестрировать, оценивать перформанс LLM и блоки пре-/пост-процессинга данных для них


Может, нам тоже надо переквалифицироваться, пока не поздно?
Please open Telegram to view this post
VIEW IN TELEGRAM
14🤔5💯4💅2
Lakehouse Podcast

Наконец посмотрела подкаст про лейкхаус с моим прошлым техлидом. Он сейчас CPO в Arenadata, крутой чел, и мне всегда интересно, как у него дела

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

🙂 "На какие бизнесовые метрики влияет лейкхаус?"

Основная бизнес-метрика - точность попадания в качество и во время


У меня сразу возникла ассоциация, как Бах выражался про игру на инструменте))

Играть на музыкальном инструменте просто. Нужно вовремя нажимать нужные клавиши


🙂 Пара интересных метрик

Time to Insight - время до получения инсайта из данных

Time to Data - время до того, как можно воспользоваться данными

🤩Еще я всегда слышала про Cloud-Native - сервисы, которые изначально пилились под облака
🤩Но не слышала про Cloud-Ready - изначально не под облако, но легко мигрировать
🤩А еще гуглинг привел к Cloud-Compatible - не под облако, но работает и с ним
🤩И к Cloud-Enabled - не под облако, но его как-то адаптировали
🤩И к Cloud-Agnostic - без использования специфичных сервисов провайдера в отличие от native

На самом деле этих cloud- штук очень много, между ними может быть тончайшая разница или одно быть частью другого

🙂 Финальная мысль

Возможно ли, что лейкхаус станет устаревшим раньше, чем большинство компаний успеют его внедрить?
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11🔥631
Full + Incremental Load

Начала читать книгу "Data Engineering Design Patterns" (2025), 375 страниц. Несколько раз видела хорошие отзывы, по содержанию очень прикольная. Это про паттерны загрузки данных, как лучше работать с ошибками в данных, как организовать правильный перезапуск пайплайна и еще много всего

В книге дали ссылочку на гитхаб с готовым кодом
Эта серия постов будет неким конспектом с добавлением моих мыслей
Итак, начнем

Data Ingestion/Загрузка данных

🌷 Full Load

Опасности и решения:
1. Следить за ростом датасета. В идеале не слишком много строк, растет медленно

2. drop-insert - опасная штука, пользователи могут читать в момент записи. Использовать вьюшку:
🤩пользователи ходят в вьюшку
🤩вьюшка смотрит на table1
🤩данные пишутся в table2
🤩table2 подменяется на table1

У нас реально были такие проблемы:

File does not exist: 
hdfs://warehouse/hive/my_db.db/my_table/2
6-01_29_data.0.parq
It is possible the underlying files have been
updated. You can explicitly invalidate the
cache in Spark by running 'REFRESH TABLE
tableName' command in SQL or by recreating
the Dataset/DataFrame involved.


Что мы сделали:
1. Добавили зависимости по событию от источников
2. shadow calc: создается копия витрины, все манипуляции происходят с копией в стейджинге, в конце делается rename

🪴 Incremental Load

1⃣Pattern: Incremental Loader

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

2й способ. Делать партиции по времени. Например, даг работает каждый час и всегда берет данные за предыдущий час

Опасности и решения:

1. Для удаленных строк применять soft delete (просто маркируем удаленной) вместо hard delete, иначе они просто останутся у нас в системе

2. Использовать Insert-only/append-only - в табличку только добавляем данные

Реализации:
1. Для даты загрузки - обязательно добавлять фильтр

f'ingestion_time BETWEEN "{date_from}" AND "{date_to}"'


2. Для партиций по времени - добавить сенсор, который смотрит на появление следующей партиции. Если партиция появилась, значит, текущий период закончился и его можно обработать. Плюс обязательно передать дату в Airflow через {{ ds }}

Я была удивлена, прочитав этот механизм. Все делаем по книжке, получается😎

2⃣Pattern: Change Data Capture

Используется, когда события нужно получать быстро (~30s). CDC - это стриминг логов журналов (WAL) баз данных

Был приведен пример с Delta Lake, но для Iceberg я тоже нашла примеры

На этом пока все, это была даже не половина всей главы🥺

#depatterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍298🔥3