Я – Дата Инженер | Евгений Виндюков
4.36K subscribers
333 photos
32 videos
12 files
230 links
💻 Как войти в IT?
💵 Как стать Data Engineer
🗄 Что такое Big Data и кто ей управляет?
_____________________________
Автор @halltape
Все вопросы по рекламе @k_shredinger
Download Telegram
🥇 Я придумал велосипед!

пост писал еще будучи в Сбере в мае. Вариантов на самом деле намного больше. Вопрос какие инструменты у вас под рукой.

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

Если конкретно, то пусть по кредитам у меня прилетело 500 000 строк, а по картам прилетело 0 строк (пустой датафрейм). Мне надо запомнить, что по картам в этот день было пусто, но ошибки не было. Скрипт успешно отработал. Или прилетело по картам всего 2 строки, а ожидается 10 000. Мне по-любому надо запомнить, что в эти даты был сбой!

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

Поэтому я подумал сделать маленьку таблицу, куда будут писать логи, типа
date, product_name, total_rows

Т.е. при каждом вычислении я пишу туда тип продукта, кол-во строк в датафрейме и дату загрузки. Тем самым у меня будет табличка из 2000-4000 строк ЗА ГОД! И это если у меня около 10 продуктов. Такое можно и в Excel открыть!

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

Здесь можно конечно сделать историю с партиционированием в самой витрине по типу продукта и дате, тем самым объединить данные в рамках продуктов. Но тогда мы не сможем контроллировать кол-во строк. Нам придется вычислять отсутствующие даты в метаданных партиций со списком сгенерированных дат. Короче это сложно и не наглядно.

Тем более моя таблица с логами прекрасно может быть визуализирована в BI. Все метрики уже посчитаны, остается лишь написать очень простые запросы и при том очень легкие по отношению к СУБД. Т.е. мы буквально сможем контроллировать загрузку и актуальность данных по стольким продуктам, сколько сами пожелаем!

Кстати эта маленькая табличка должна иметь свойство обновляться. Если за 2024-06-01 у нас было 0 строк и мы сделали загрузку на 4 000 строк, то очевидно, что логи с нулем надо удалить. Здесь можно внедрить SCD, но мне историчность пока не нужна и я просто делаю group by и оставляю max(date).

Насколько понятно, что я написал?))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥82🤯1
Обучаем разработчиков платформы данных и берём в команду ⚡️

Регистрируйся на онлайн-интенсив в Открытые школы Т1!
От тебя нужен только опыт работы от 6 месяцев в проектах разработки хранилищ данных и желание попасть в команду Т1.

Лучшим участникам предложим оффер в Т1 — крупнейшую ИТ-компанию страны по версии RAEX и CNews Analytics 2023🔝.

Зачем участвовать?

⚙️Приобрести ценный опыт. Одними из первых на рынке внедряем технологии для управления данными.

⚙️Получить поддержку наставников. Карьерные треки для выпускников Открытых школ позволяют быстрее вырасти в мидла.

⚙️ Работать в классной компании, где есть все айтишные бонусы (ДМС, удалёнка и крутые офисы, спорт и обучение).

⌛️ Быстрое обучение: 1 месяц.
💻 Гибкий формат: все этапы онлайн, занятия по вечерам.

Бигтех ждёт тебя, подавай заявку до 13 сентября!
Старт интенсива: 16 сентября.

Реклама. Информация о рекламодателе
👎9🤔5🔥43👍3
🔴 СТРИМ уже в ЭТУ СУББОТУ! 12:00!

21 сентября в 12:00

Мощнейший стрим, где я отвечу на часто задаваемые вопросы про то, как сейчас на рынке DE, с какими проектами залетать в IT и не поздно ли?

Плюс вы накинули мне в комментах кучу дополнительных тем, которые могут даже не уместиться и в ДВА СТРИМА!

Постараюсь ответить на бОльшую часть, а также зарядить вас мотивацией и пушечной энергией, чтобы вы уже в этом году или край ВЕСНОЙ следующего года залетели в профессию!

Также анонсирую менторство и в целом расскажу, кому оно может быть нужно, а кому и бесполезно!

Стрим будет под запись, поэтому не страшно, если пропустишь. Сможешь вернуться позже и посмотреть в записи!

P.S. Вы также сможете задать свой вопрос на стриме, если хотите!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2110👍2😁1
🗑 Полгода работы в мусорку!

Когда я пришел на свою первую работу в качестве Data Engineer, то первое время я ВООБЩЕ НИЧЕГО НЕ ПОНИМАЛ!

📉 Например есть таблица для аналитиков, которая содержит данные по кредитам. Там номер кредита, user_id, статус кредита, дата заявки и еще парочка полей с данными. Но как собирается эта витрина я вообще не понимал и, смотря первое время на код, мне становилось плохо и я умирал.

Т.е. эта витрина очевидно собиралась из каких-то сырых данных (таблиц), потом соединялась с другими по своей сложной логике, потом обновляла данные из другой таблицы и черти что еще! Я, пришел, такой зеленый, смотрел на код на Spark и не понимал даже откуда начать копать, чтобы разобраться...

🏗 При этом сборка витрины – это же ведь просто написанный код. И он часто меняется, дополняется. В некоторых источниках могло измениться поле (столбец), поэтому надо переписывать часть блока кода. А иногда могла замениться и вся таблица источник!

Как вы понимаете, документация не может так быстро корректироваться. Это надо еще отследить, передать в задачи системному аналитику! Я за то, чтобы документация писалась хотя бы на полгода жизни. Иначе в ней смысла абсолютно нет.

☠️ Представили ситуацию? Это кстати ждет каждого из вас, когда вы придете на новое рабочее место. Если у вас нет, как минимум, схемы в документации, как собирается витрина, то вас ждет АД!

Но не везде так сложно. Умные люди придумали решение этой проблемы. Одно из решений – это DataHub. Оно open source, поэтому можете поставить у себя локально. Визуально это просто интерфейс, в котором вы можете проследить, как собирается табличка и из каких источников. Более того, можно увидить имена пользователей, типы полей, их наименование и разную статистику. Короче максимально удобная вещь, особенно при онбординге на новом месте!

Будете на собесе, можете спросить, есть ли у команды что-то похожее на DataHub! Кстати, из тех компаний, которые используют DataHub – это компания Сравни (кстати можете подписаться на их TG канал). Они даже статью отдельно об этом написали на Хабре! Да и в целом рекомендую на них подписаться. Довольно прогрессивные ребята в плане data стека.
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍13🔥5😁2
🔴 Уже ЗАВТРА стрим!

В 12:00 стрим по московскому времени. Отвечу на ваши вопросы, расскажу про рынок DE, стек, а также анонсирую менторство!

Будет запись, поэтому сможете посмотреть потом в записи.

По времени не дольше двух часов.

Кстати, вы еще можете накинуть сюда дополнительных вопросов в комменты, пока есть возможность!
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥3
Live stream scheduled for
Ну че, готовы собираться в 12:00?
Anonymous Poll
21%
Да
15%
Нет
64%
Посмотрю в записи
🔴 Спасибо всем, кто был на стриме!

Запись СТРИМА ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
13
😘 Стрим на Youtube!

Это субботний стрим с лучшей картинкой + лучше звук!

➡️ Смотреть здесь

У меня Youtube работает нормально только через YOTA. Т.е. когда я раздаю интернет с телефона, то ютуб работает нормально. А вот с домашнего провайдера все печально. Но пока ютуб остается лучшей площадкой для распространения и просмотра контента. Я конечно гружу параллелльно на альтернативные площадки, но это в целом не имеет смысла. Только, как хранилище видео. Просмотров и трафика там нет.

Я на ютубе с июня 2008 года и помню все его интерфейсы. И просто взять и заменить его не получится. Там уже загружено невероятное кол-во контента + система рекомендаций.

Ну все равно подписывайтесь на ютуб канал!
https://www.youtube.com/@halltape/videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥43
🟢 Открываю ЗАПИСЬ на менторство!

Записаться здесь ➡️ КЛИКАЙ СЮДА

Приходи на менторство, если есть такие вопросы:

📌 Сколько просить денег на собеседовании?

📌 Крутить ли опыт или нет?

📌 Идти на стажировку или сразу на джуна?

📌 Берут ли после 30, 40, 50 лет в IT?

📌 Не знаешь с чего начать изучение

📌 Не понимаешь какой пет проект нужен и нужен ли он вообще

📌 Запутался в теории и уже не понимаешь, что надо знать на джуна

А может у тебя есть вопросы конкретно по технологии. Например тебе неясно, как работает Spark, чем он отличается от Pandas, а может ты до сих пор не понял(а), что такое Hadoop и как он связан с HDFS? Или может тебе хочется понять, что именно делает (прямо руками) на работе Дата Инженер!

Со всеми этими вопросами ты можешь писать мне! Разберемся!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👎12👍10😁32
🗣Вакансия! BI

BI разработчик в Магнит Tech

Проект: СУСМ ОЦО (отдельное направление)
4 дашборда на данным момент
Отчет аналитика SLA
Цель:
Объединить операционные показатели ОЦО из различных систем в единую структурированную базу данных для мониторинга полной нагрузки на персонал и оперативного перераспределения ресурсов в случае форс-мажоров.
Задачи:
-разработка и развитие BI-отчетности ОЦО, -миграция отчетности в импортозамещенную BI-платформу
Стек технологий:
Qlik sense (это важно), yandex clickhouse, apache superset

Ждем от тебя:
-опыт работы в bi-инструментах (qlik, superset,pixbi)
-опыт разработки сложных моделей данных
-опытный пользователь sql. html css, java script приветствуются
-самостоятельность

Что предлагаем:
-очень интересный сложный продукт с большим количеством пользователей
-формат работы: полная удаленка, при желании – гибрид/офис
-оформление в IT-компании, аккредитованной в Министерстве цифрового развития

💬Писать насчет вакансии
@Fedotovais
Please open Telegram to view this post
VIEW IN TELEGRAM
3👎3🔥3🤔1
🧐 Блесните этим кейсом на собесе!

Смотрите. Вот вы прочитали данные из источников, трансформировали и если просто сохраните данные в таблицу, то физически она будет в виде кучи мелких файлов формата .parquet. Если это таблица за полгода, то будут сотни миллионов мелких файлов, что для HDFS очень плохо. Нужно стремиться, чтобы файлы были около 128Мб!

Что надо делать?
Если у вас инкрементальная загрузка за один день, после всех трансформаций пишете
df.repartition("date_column") - "date_column" это столбец с датой

Тогда Спарк перемешает все данные в памяти и склеит их в один файл. Тут нужно будет посмотреть. Если файл будет создаваться размером от 10 до 130Мб, то в целом можно так и оставить.
Если будет 1Гб, то можно в repartition добавить цифру 8. Тогда он будет разделять на равные кусочки по 128Мб.

Дальше, после того, как за один день у вас все укрупнено, пишите partitionBy("date_column"). Тогда для каждого дня создается отдельная папка.

В итоге у вас столько папок, сколько загружено дней. Одна папка = один день. И внутри каждой папки один и несколько крупных файлов.

В итоге при чтении таблицы, можно читать только определенные дни без FULL SCAN и сами файлики внутри папок не будут нагружать HDFS + их чтение тоже ускорится, так как это чтение одного файла, а не тысяч мелких.

Чтобы понять, насколько много у вас файлов и папок в HDFS есть такая команда:

hdfs dfs -count -v hdfs://hive/schema/table
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥85👎1
💻 Хочешь свой канал?

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

🚀 Сейчас я вам накину базу, прежде чем вы пойдете создавать свои телеграмм каналы. Это СУПЕР ВАЖНО! Пожалуйста, прочитайте и потом перечитайте несколько раз!

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

💬 Как было у меня. Есть канал data learn. Когда я там написал, что залетел в DE, то меня сразу начали расспрашивать подробности. Было трудно ответить каждому, поэтому я создал канал и пригласил туда всех, кто хочет.

Дальше я только обслуживал этот спрос, создавая контент. Дополнительный трафик у меня идет с YouTube. Там люди переходят с моего канала и с подкастов. Есть спрос на то, что такое DE, как войти в IT или как сменить направление в IT. Пока этот спрос существует, я могу его обслуживать и получать аудиторию.

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

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

Как выбрать нишу?
Поискать, что уже есть на рынке и оценить объем людей. Очевидно, что в DE нельзя собрать канал на 1млн человек. Столько просто нет специалистов. Но 10 владельцев бизнесов в вашем канале может принести больший профит, нежели 1млн школьников.

Люди приходят в ваш канал и вам нужно дать им реальную ценную инфу. Им пока что плевать на то, какой вы талантливый. Закройте им их боль, а потом может у них появится к вам симпатия. Вы работаете наемным сотрудником и обслуживаете спрос ваших подписчиков.

Вот вам пример. Я могу создать канал, в котором буду рассказывать, как я пишу посты, как монетизируется канал, как запустить бусти и в целом привлекать аудиторию.. Часть из вас может перейти туда и вот мои первые 10-20–30 человек. Я закрываю потребность, потому что знаю, что она есть.

Не наоборот. Кстати, если вам интересен формат бусти в IT и насколько он шире по контенту, чем основной канал, то можете перейти по ссылке и подписаться.

🅱️🩸🩸🩸🩸
https://boosty.to/halltape_data
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥2