Я – Дата Инженер | Евгений Виндюков
4.57K subscribers
337 photos
34 videos
12 files
234 links
💵 Как стать Data Engineer
🗄 Смотри Roadmap в закрепе!
_____________________________
Автор @halltape
Все вопросы по рекламе @k_shredinger
Download Telegram
Задача на SQL

Нужно посчитать медиану дохода. Можно написать просто алгоритм, как будете решать. Кто решит, тому трешка в мск в центре!
😁6
Сколько весит таблица?

Нам будут выделять свой собственный кластер, поэтому мы считаем «сколько вешать в граммах». Собственно, как узнать сколько весит таблица, партиция?

Я запускаю в Jupiter notebook:
df.persist()
df.count()


После этого в Spark UI во вкладке Storage появится наша таблица. Можно будет даже проследить, как по мере её вычисления размер в Mb растет. Окончательный вес будет в конце.

Ну а df.count() в ноутбуке покажет количество строк. И не забываем потом чистить хеш unpersist().

Кто как узнает вес данных? Метод с SparkEstimator у меня не пошел - не смог подключить его.. 🤔
3👀1
This media is not supported in your browser
VIEW IN TELEGRAM
😁4🔥2
Что значит разрабатывать витрины данных и как это выглядит?

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

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

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

Сам скрипт main.py можно запускать в Jupyter notebook руками каждый день. А можно написать DAG в Airflow и это все будет грузиться автоматически само.
👍135🔥3
Я – Дата Инженер | Евгений Виндюков pinned «Что значит разрабатывать витрины данных и как это выглядит? Витрина данных - это просто собранная из других таблиц таблица для аналитиков или дата сатанистов. Представьте у вас есть табличка с id людей и их покупки в магазине. И еще есть табличка, где этот…»
Как этот Hadoop выглядит?

Вот внешне никак. Он вообще не на вашем компьютере установлен. Он на серверах. Хабуп это просто распределенное хранение и вычисление данных. Короче ваша таблица в 100гб делится на блоки в 128мб (размер можно ставить любой) и потом они раскидываются по разным сервакам, параллельно дублируясь дважды (количество репликаций можно менять).

НО! У хабупа есть YARN. Это веб интерфейс в котором можно отслеживать как происходят вычисления в реальном времени. Это просто менеджер ресурсов, который показывает сколько у вас машин, сколько памяти, какие приложения сейчас считают и насколько нагружена вся эта канетель.

Я всегда смотрю, как вычисляются мои таблички. Вижу прогресс, сколько загрузилось, а сколько осталось. Оч нужная штука, чтобы оценить насколько вам требуется увеличение мощности в случае, если начнете считать внезапно х2 таблиц.
👍64
Чем pandas отличается от spark?

Это обе библиотеки Python. Это тот же sql, только написанный больше питоновским языком. Здесь можно сохранять подзапросы или целые таблицы в переменные, как в питоне. И вместо того, чтобы писать огромную портянку на sql, которая сразу выполняет весь запрос, в Спарке и пандасе можно выполнять весь код хоть построчно. Только spark умеет работать с распределенными данными, а pandas нет (ну т.е. только в пределах вашего компа)

Вот пример кода:
Pyspark
spark = SparkSession.builder \
.appName("halltape_data") \
.getOrCreate()

df = spark.table("schema.table.csv")\
.select("column1", "column2")\
.where(F.col("salary") > 100000)
df.show()

Pandas
df = pd.read_csv("table.csv")
df_2= df[["column1", "column2", "salary"]]
df_final = df_2[df_2["salary"] > 100000]
df_final.head()

Выглядят они в целом одинаково. Но в spark есть настройка sparksession как видите. Она позволяет настроить количество памяти, процессоров и так далее при котором Спарк будет считать это всё на кластере. Здесь я её не прописывал, там много параметров. Просто имейте в виду. Рекомендую для практики писать sql запрос, потом переписывать его на pandas или на spark.
👍125
Я – Дата Инженер | Евгений Виндюков pinned «Чем pandas отличается от spark? Это обе библиотеки Python. Это тот же sql, только написанный больше питоновским языком. Здесь можно сохранять подзапросы или целые таблицы в переменные, как в питоне. И вместо того, чтобы писать огромную портянку на sql, которая…»
🔤🔤🔤🔤
Нужны ли оконные функции?


Да. Если вы шарите за оконки в sql, то в spark или pandas освоить будет не проблема. Все аналогично. Оконные функции конечно вызывают страх и непонимание с первого раза, но не переживайте, я попробую вам объяснить.

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

Оконная функция бьет вашу огромную таблицу на такие мелкие таблички(окна). И внутри каждого окна вычисляется то, что вам надо.

Например, если вам нужно посчитать нарастающий итог или пронумеровать в рамках одной группы, то здесь оконка будет самое то!
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3
🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤
Что такое вывести в прод?

Прод, он же продакшен или промышленный код. Есть работающий код, который лежит в гите на ветке master. На этом чистовом виде кода и запускаются витрины, приложения и чего там еще можно запускать. А ваши черновые варианты кода лежат на ветках feature (на самом деле ветку можно назвать и super_rap или nagibator777).

Короче когда вы уверенны в своем коде, что он работает как надо, то вы делаете pull request. Это тупо заявка на то, чтобы вашу ветку nagibator777 залили уже на master. Эту заявку принимает человек, который ответственен за master ветку. Либо это вы сами, если вы очень крутой сеньор помидор сенатор Палпатин.

Собственно он проверяет ваш код, пишет комментарий в местах, где ваш код отстой. И после всех правок, если все ок, то делается merge. Ваша ветка сливается в ветку master.

При этом все изменения и версии кода сохраняются в git. Это удобно, если нужно посмотреть, что было до этого.

Гит - это наш GitHub, либо GitLab, либо Bitbucket. Каждая компания использует свою тему.
Please open Telegram to view this post
VIEW IN TELEGRAM
7😁2👨‍💻2
🔤🔤🔤🔤
Код писать недостаточно!

Вот вы пишите код, крутите таблички свои, но задаетесь ли вопросом:

«А для кого это делаете?»
«А нужна ли эта штука в целом?»
«А как ей будут пользоваться?»

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

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

И вот здесь мы выходим за пределы знаний join или spark. Это вообще не имеет смысла, если мы в душе не знаем, откуда брать данные по банковским картам. Причем источник может быть еще и составным. И нельзя найти просто таблицу с картами и банком. Может нам сначала надо как раз и собрать этот источник. А таблицы огромные и широкие и быстро их не прощелкать. И столбцы называются как-нибудь «yup_amt». Это что?

Плюсом сложность добавляется, если у нас строки с вложенностью. Какой-нибудь json или список. Это надо еще распарсить.

А по какому полю соединять? А может нужно по двум ключам соединять? А может вообще anti join нужен?

Поэтому нужна грамотно и понятная расписанная документация, ибо без бутылки водки точно не разберешься. А если это сквозная аналитика по рекламе, то надо понимать, как работает CPA сеть, Яндекс Метрика. Иначе все превращается в обезличенный текст на питоне без смысла.

Документация пишется в Confluence. Это что-то типа GitHub, только там текст. Можно делать ссылки на главы, страницы. А также всевозможное форматирование, возможность рисовать схемки, как в draw.io.

И желательно, чтобы документация была написана для бабушки, чтобы экономило время на изучение и не долбить коллег с вопросами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥2🍌2
🟢Анонс интервью!

Подписывайтесь, кстати на канал Ии.
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Ну что, уже завтра буду выкладывать видео с новым подкастом, он получился очешуенным!

Гость: Евгений, Junior Data Engineer, сегодня закончился его испытательный срок и началась настоящая игра). Женя, поздравляю!

Женя поделится:
• как выбирал между DE и Кино
• почему не продолжил обучение в Школе21
• что помогло ему найти работу
• как он отказал Центробанку в собесе
• как работается в Сбере и как проходит адаптация
• какие инструменты сейчас использует
• и ответит на главный вопрос: по любви в профессии или за деньги

💚Подкаст вышел супер емким, независимо от IT-профессии
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Forwarded from Госпожа аналитик 💚 Ия Зотова (Ия Зотова️)
🎞 DATA ENGINEER: ПО ЛЮБВИ ИЛИ ЗА ДЕНЬГИ
https://youtu.be/tltPPLTemzE

Гость: Евгений, Junior Data Engineer в Сбере

В интервью Женя делится:
• как выбирал между DE и Кино
• почему не продолжил обучение в Школе21
• что помогло ему найти работу
• как он отказал Центробанку в собесе
• как работается в Сбере и как проходит адаптация
• какие инструменты сейчас использует
• и ответит на главный вопрос: по любви в профессии или за деньги

💚Подкаст вышел супер емким и будет полезен всем начинающим специалистам, независимо от IT-профессии

Если было полезно и словили инсайты, будем рады донатам. К задонатившим прилипает лучшая в мире работа😁:
https://pay.mysbertips.ru/92484472

Делитесь подкастом и подписывайтесь на наши каналы:
Ия: https://t.iss.one/Lady_Analyst
Женя: https://t.iss.one/halltape_data

P.S.: А еще Женя просто огненный спец по видео: он снял и смонтировал крутой подкаст, даже находясь в кадре🔥 Женя, восхищаюсь твоим талантом! Искреннее благодарю тебя за участие!🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥126👍2🤩1💩1
🟢 Всем, кто здесь впервые!
.
👨‍💻 Кем ты хочешь стать и что надо учить?
1) BI аналитик
2)
Data Аналитик
3)
Data Инженер

👩‍💻 Все твои проекты лучше оформить на GitHub

👩‍💻 Ты все выучил? Тогда начинай решать задачи

👩‍💻 Что спросят на собесах?
Вот теоретические вопросы, а вот задачи.
А вот ответы.

💰 Готов искать работу? Все про резюме.

📺 Кто я и как попал в IT?
СМОТРИ интервью со мной!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤‍🔥32👎1
💬 Как написать telegram бота?

Смотрите, рассказываю на пальцах вариант в лоб. Подходов просто несколько и они разные.

Сначала вам нужно создать телеграм бота в самой телеге. Надо написать @BotFather и там по инструкции придумать имя, псевдоним, описание и задать команды. Команды - это типа /start. Про первом запуске бота мы все с вами нажимаем эту кнопку.

👍Отлично. Бот готов. Но он ничего не делает. Теперь надо написать сам код. Код проще писать на python. Но можете хоть на си, хоть на йопта скрипт, если вы мазохисты.

Чтобы наш бот работал нам надо написать код. Поэтому создаем на компьютере файл любого имени, например nagibator_777.py. Дальше пишем свой код, который будет работать в терминале локально. А вот, чтобы бот работал, надо в коде написать строчку типа bot_API_token: “37484948bfjxbeii374849”, где в кавычках надо вставлять токен, полученный от @BotFather.

Так наш питоновский код будет напрямую обращаться к нашему боту по уникальному ключу.

Но теперь надо будет написать специальные функции и методы для телеграм бота. Для этого есть как минимум две библиотеки: telebot и aiogram. Я использовал telebot. Она проще.

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

‼️Кстати, как только вы запускаете свой питоновский файл, ваш бот начинает работать. Но как только вылетает ошибка по коду или вы отключаетесь от интернета, то бот автоматически теряет связь и все. Поэтому для работы бота 24/7 нужно использовать сервер - они платные, либо всегда держите включенный компьютер. Самый простой сервак - 200₽/мес. Либо можно использовать Яндекс.Функцию. Но это еще не всё. На сервере надо же скачать telebot как минимум, а может и другие недостающие библиотеки и подобное. Не будете же вы это все заново устанавливать, как у себя на компе.

👩‍💻 Я рекомендую использовать docker для запаковки вашего кода. Докер это все равно, что ваш exe-файл с counter-strike 🎮. Нажал одну кнопку, он сам все собрал, скачал нужные файлы и запустил. Т.е. грубо говоря, вы делаете еще один файл, где пишите инструкцию, типа

Скачай питон
Скачай telebot
Сделай папку
Запусти код

💿 Можете скачать себе код моего бота и запустить у себя

Если есть вопросы, пишите их в комменты к этому посту.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82🍌1👨‍💻1