Инженерообязанный🫡 | Блог Дата Инженера
#кейсы
😖 Еще со времён второй части обещаю написать пост по кейсу, в котором я смог применить алгоритм "нахождения границ островов".
О самом кейсе я рассказывал в самом видео, но повторюсь - смысл задачи заключался в нахождении границ времени, когда программное средство не работало⛔️ . Сама ПОшка писала логи в виде CSV файлов, и при правильной работе, разрыва между строками логов не могло быть больше 30 секунд. Грубо говоря, считалось, если оператор за 10 минут не перегрузил ПО, то он пинает хуй.😴
Принцип решения заключался в том, что колонку со временем я перевёл в числовой timestamp, округлив до минут. Далее применил алгос "нахождения границ островов", добавил оконку смещения и из большего отнимал меньшее, далее отфильтровывал все записи, в которых время было больше 10 минут, и делал отчёт. ВСЁ ИЗИ❗️
🔖 Алгоритм на примере задачи🔖
Есть таблица с 1-ой колонкой, где записан ряд чисел:
Островом считается непрерывный отрезок значений - 2-3, 11-13, 27, 33-35, 42. Необходимо найти минимальное и максимальное значение острова❓
🔖 Решение с объяснением🔖
Само решение элементарно простое:
Смысл следующий: если вы из последовательности col1 вычтите последовательность ROW_NUMBER, то вы получите одинаковый шаг, в рамках одного острова, так как увеличение значений col1 и ROW_NUMBER будет одинаковым, т.е. на1️⃣ . Всё, дальше группируете по этому шагу и находите минимальное и максимальное значение.
"Это же элементарно, Ватсон". Всё добавил в песочницу😙 .
Вот вам от меня🎅 Новогодний подарок🎁 в виде готового кейса, который можно описать в резюме(опыт крутить не заставляю, но и противником не являюсь!), а еще данную задачу дают на собесах, сам не встречал, но в комментариях под постами люди сталкивались‼️
О самом кейсе я рассказывал в самом видео, но повторюсь - смысл задачи заключался в нахождении границ времени, когда программное средство не работало
Принцип решения заключался в том, что колонку со временем я перевёл в числовой timestamp, округлив до минут. Далее применил алгос "нахождения границ островов", добавил оконку смещения и из большего отнимал меньшее, далее отфильтровывал все записи, в которых время было больше 10 минут, и делал отчёт. ВСЁ ИЗИ
Есть таблица с 1-ой колонкой, где записан ряд чисел:
INSERT INTO T1(col1)
VALUES (2),(3),(11),(12),(13),(27),(33),(34),(35),(42);
Островом считается непрерывный отрезок значений - 2-3, 11-13, 27, 33-35, 42. Необходимо найти минимальное и максимальное значение острова
Само решение элементарно простое:
WITH t2 as (
SELECT
col1,
col1 - ROW_NUMBER() OVER() AS col_raz
FROM T1)
SELECT
min(col1) as startrange,
max(col1) as endrange
FROM
t2
GROUP BY t2.col_raz
ORDER BY startrange;
Смысл следующий: если вы из последовательности col1 вычтите последовательность ROW_NUMBER, то вы получите одинаковый шаг, в рамках одного острова, так как увеличение значений col1 и ROW_NUMBER будет одинаковым, т.е. на
"Это же элементарно, Ватсон". Всё добавил в песочницу
Вот вам от меня
Please open Telegram to view this post
VIEW IN TELEGRAM
Пора подвести итоги уходящего года.
1) Я уволился с военки.🫡
2) Я устроился в IT.👨💻
За последние лет 10, это самый продуктивный год👍
1) Я уволился с военки.
2) Я устроился в IT.
За последние лет 10, это самый продуктивный год
Please open Telegram to view this post
VIEW IN TELEGRAM
Ребят, поздравляю вас всех с наступающим Новым 2025-м годом.🚩
🍭 Пусть этот год даст вам лютейший буст(как мне когда-то дал это 2024), терпения, здоровья, понимания всего входящего в вас материала, легких задач, спокойных выходных с пятничными мержами, быстрых выполнений запросов и в целом написанного кода, понимание видеоматериалов на индуском языке и вообще, чтобы все подобные видео появились и на русском, и вся дока тоже, также не забываем про повышение зарплат и легкого прохождения собесов.
Не могу оставить вас и без подарка🎁 , специально для вас был создан бот(ссылка) , который даёт быстрый доступ к Ютуб платформе для просмотра наших видео, а также видосов индусов для успешного прохождения собеседований. Получайте ключи, тестируйте VPN, для того,чтобы мы его могли продолжать улучшать для вас. О любых проблемах, с которыми вы столкнетесь, пишите в чат поддержки!
🎆 🎆 🎆 🎆 С наступающим Новым 2025 годом! 🫡🎆 🎆 🎆
Не могу оставить вас и без подарка
Please open Telegram to view this post
VIEW IN TELEGRAM
Оставлю их тут для вас, чтобы долго не искать!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой купить курс, чтобы войти в IT?
Ответ: НИКАКОЙ, всё
Ребят, сегодня произошел очередной взрыв моего мозга
- Её нет! Я однажды обжёгся об курсы и больше никогда их советовать не буду. Самый лучший и эффективный курс — это самообразование(Вот вам наш БЕСПЛАТНЫЙ курс), ну в крайнем случае, если хочется потратить денег, отдайте их мне, либо сходите к ментору. Первое — он подскажет, что еще подучить, второе — вы учитесь один на один т.е. индивидуально, на курсах такого не будет и денег потратите меньше
В связи с неактуальностью Российских видео площадок, видео туда выкладываться не будут. Чтобы смотреть Youtube, есть наш VPN бот с бесплатным доступом к ЗАМЕДЛЕННОМУ Youtube.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Вот, почему я больше НИКОГДА не куплю НИ ОДИН КУРС!
После входа, ко мне все больше вканутов, спрашивают: "А какой курс купить?", мот ответ "Никакой, всё говно!".
Меня прям бобит с этого, когда пытаешься людям доказать, что интернет он большой и тут есть вся необходимая информация и если тебе просто впадлу…
Меня прям бобит с этого, когда пытаешься людям доказать, что интернет он большой и тут есть вся необходимая информация и если тебе просто впадлу…
Пока все жаловались на отключение интернета и вообще полный коллапс⛔️ , у меня всё топ🏖 , поэтому решил, что сделаю для вас небольшой пост с задачами, на которые стоит обратить внимание при создании своих пет-проектов и для легкого вката в реальные задачи.🙂
Многие знают, что последние 4 месяца я работаю в "Сравни" и выполняю задачи в рамках миграции из системы SnowFlake в Greenplum и ClickHouse, а именно помогаю аналитическим подразделениям переписывать их запросы и Джобы(питоновские скрипты для TeamCity) со старой системы на новую.🤯
С переходом на новые рельсы, возможно, мы продолжим заниматься Джобами по тикетам аналитиков, а ,возможно, они останутся у них, пока что это решение витает в воздухе😖 . Но хочу обратить внимание людей, которые хотят стать, как Инженерами Данных, так и Аналитиками на следующие ❗️ ВАЖНЫЕ❗️ аспекты рабочей деятельности. Я переписал достаточно много запросов и джобов, и все они содержали в себе одни и те же конструкции, о которых мало говорят на курсах🤐 . Перейдём именно к ним.
🔖 При написании запроса SQL происходит частое обращение к типами данных - JSON и Array, хранящимся в хранилище. При этом сами данные могут быть в строковом формате и нельзя быть на 100% уверенным, что тот же JSON сформирован верно. Советую потренировать следующие навыки👨💻 :
⏺ перевод объектов в формат строки и наоборот
⏺ проверки правильно сформированного JSON
⏺ нахождения значение по ключу
⏺ проверки на содержание ключа
⏺ нахождения длины объекта
⏺ разворачивания и сворачивания объекта
🔖 Большое количество CASE-, IF-функций, и в целом обработка условий. Чтобы не писать большие CASE, их иногда записывают в функцию и вызывают именно её.
⏺ Изучите синтаксис написания функций и засуньте в неё CASE.
🔖 Это всё касалось SQL, а что же там с нашим любимым питончиком? А там всё намного проще. Необходимы навыки:
⏺ отправки сообщений для алёртинга ошибок в разные системы на основе ботов, чатов или каналов в Телеграмме, Слаке, Дискорде
⏺ формирования отчетов в формате xlsx с несколькими страницами
⏺ отправки как вложенных отчетов, так и обычных сообщений на несколько адресов
⏺ подключение к базам данных через библиотеки psycopg, SQLAlchеmy, Pandas
⏺ доставание данных в разных форматах - список кортежей, DataFrame, JSON.
❗️ Хочу заметить, что данных задач нет в RoadMap_v2.0, так как данные навыки вообще не являют обязательными для вката в IT. Этому всему я научился уже непосредственно выполняя рабочие задачи.
Многие знают, что последние 4 месяца я работаю в "Сравни" и выполняю задачи в рамках миграции из системы SnowFlake в Greenplum и ClickHouse, а именно помогаю аналитическим подразделениям переписывать их запросы и Джобы(питоновские скрипты для TeamCity) со старой системы на новую.
С переходом на новые рельсы, возможно, мы продолжим заниматься Джобами по тикетам аналитиков, а ,возможно, они останутся у них, пока что это решение витает в воздухе
Please open Telegram to view this post
VIEW IN TELEGRAM
Если зайдет то буду преподносить такие подгоны по прохождению собеседований👨💻 .
#соБЕСики
🔖 Вакансия: Разработчик DWH
🔖 Компания: ООО «Концепт Разработка»
🔖 Предполагаемая вилка: 150к-250к на руки
🔖 Месяц прохождения собеседования: Январь 2025
🔖 Формат работы: Полная удалёнка
🔖 Требования вакансии:
⏺ Опыт работы на проектах по построению DWH от 3х лет;
⏺ Понимание основных подходов к проектированию DWH;
⏺ Опыт оптимизации запросов, умение читать и понимать чужой код, выявлять узкие места, подлежащие рефакторингу и оптимизации;
⏺ Опыт работы с Python, использования PySpark и Airflow;
⏺ Желателен опыт работы с PostgreSQL или Greenplum и Hadoop.
🔖 Этапы собеседований:
HR➡️ Интервью(HR, TeamLead) ➡️ Техническое собеседование(HR, TeamLead, Лютый Python-разработчик)
🔖 Процесс прохождения:
Откликнулся на вакансию, HR написал мне и пригласил на интервью, где мне рассказали о компании(все как везде, если что на сайте у них почитаете), расспрашивали о моём опыте, чем занимался на нынешнем рабочем месте, подробнее попросили рассказать о миграции и прям какие таски выполняю по ней. Просил 200к на руки, предложили 190к, согласился🚩 . Предложили на выбор Python или GreenPlum для тех. интервью, выбрал Python, потому что он сильно реже мне встречался на других собеседованиях. А тут полноценное собеседование по Python, стало интересно.
Далее меня пригласили на техническое собеседование, где были все те же самые люди и дополнительно позвали Python-разработчика именно он и задавал мне техническое вопросы.
🔖 Вопросы технического собеседования:
⏺ Лямбда функция (что это, зачем, где использовать)
⏺ Назовите парадигмы ООП?
⏺ В чем разница "==" и "is"?
⏺ Self(что это, для чего нужен, как и где использовать)
⏺ В чем разница между func и func()?
⏺ Назоваите изменяемые и неизменяемые объекты.
⏺ Декораторы (что зачем нужно, как влияет на структуру) + написать свой пример
⏺ Генератор (что зачем нужно) + написать свой пример
⏺ Как рассчитывается сложность алгоритма? на примере list, tuple
⏺ Как передаются аргументы в функцию?
⏺ Зачем прописывать тип входящих или выходящих данных в функцию?
⏺ Что такое super() и зачем нужен?
⏺ Что такое итерация?
⏺ Расскажи порядок разрешения методов?
После этого была мини задача на SQL:
⏺ выведи топ пять компаний у кого самая большая трата средств на работников.
🔖 Время прохождения технического собеседования: 1,5 часа
🔖 Итоговое мнение:
В общем и целом мне понравилось, что не душили чем-то одним и вообще было комфортно сидеть и общаться с людьми. Если я не знал или путался, мне подсказывали, а если отвечал, не говорили, что это не полный ответ и надо прям БАЗУ выдавать. Единственное, что настораживает, при таких вопросах и в целом стеке предлагают 190к в месяц на руки, по мне их верхняя вилка должна быть минимальной.
Если вдруг захотите поделиться прохождением своего собеса, буду только рад.
#соБЕСики
HR
Откликнулся на вакансию, HR написал мне и пригласил на интервью, где мне рассказали о компании(все как везде, если что на сайте у них почитаете), расспрашивали о моём опыте, чем занимался на нынешнем рабочем месте, подробнее попросили рассказать о миграции и прям какие таски выполняю по ней. Просил 200к на руки, предложили 190к, согласился
Далее меня пригласили на техническое собеседование, где были все те же самые люди и дополнительно позвали Python-разработчика именно он и задавал мне техническое вопросы.
После этого была мини задача на SQL:
В общем и целом мне понравилось, что не душили чем-то одним и вообще было комфортно сидеть и общаться с людьми. Если я не знал или путался, мне подсказывали, а если отвечал, не говорили, что это не полный ответ и надо прям БАЗУ выдавать. Единственное, что настораживает, при таких вопросах и в целом стеке предлагают 190к в месяц на руки, по мне их верхняя вилка должна быть минимальной.
Если вдруг захотите поделиться прохождением своего собеса, буду только рад.
Please open Telegram to view this post
VIEW IN TELEGRAM
#кейсы
🚨 Ребят, рассказываю про кейс, с которым столкнулся🚨 .
Вероятнее всего будет интересен Аналитикам из-за работы с Pandas, но Инженерам данных тоже к прочтению.🧑🎓
Вкратце, есть Дата Фрейм, и в нём 12к строк, и 22 колонки, и джоба работает абсолютно нормально, все преобразования работают за секунду, а заливка данных в GreenPlum 13 минут работает. Сами понимаете,12к строк всего, а если там будет 100к строк? Что тогда🤔 ? (Считать не нужно, вопрос риторический)
Пример кода загрузки в GreenPlum:
Оказывается, что при использовании стандартной функции to_sql, данные записываются в базу данных построчно, грубо говоря командой INSERT, а параметр chunksize задаёт через сколько строк сделать коммит в БД. При таком использовании время вставки 5к строк составляет:
Нам конечно же такая тема не понравилась, так как очень долго. Начал думать🤔 , что и как сделать так, чтобы ускорить данный процесс. В голову приходила только идея💡 сохранять данные в файл и использовать команду COPY. И в итоге, нарвался на статью от SQL-EX(ссылка). В общем и целом, там рассматривается 5 способов загрузки данных с помощью библиотеки Pandas в Postgres(если кто не знал 😳 для GreenPlum используется движок Postgresql, поэтому данные варианты подходили и нам). Выбрав самый быстрый способ🐆 , оказалось, что в параметр method можно передать свою функцию, где мы будет передавать логику сохранения файла(в нашем случае все сохраняется в памяти) и выполнения команды COPY, и что не мало важно, код был понятным для аналитиков. Код получился следующим:
В данном случае - время резко сократилось в +100500 раз, и чем больше данных, тем данный метод будет быстрее.
Это метод хорош, когда данных немного, от силы до пары гигабайт. Если данных больше, то лучше сохранять данные в сыром виде и уже с помощью PXF подгружать данные в GreenPlum.
‼️ Могу посоветовать сохранить к себе данную статью, чтобы при столкновении с подобной задачей, долго не искать как и что.(Для этого я его тут и сохранил😂 ).
Интересно, а GPT напишет такой код? Хмммм....
Вероятнее всего будет интересен Аналитикам из-за работы с Pandas, но Инженерам данных тоже к прочтению.
Вкратце, есть Дата Фрейм, и в нём 12к строк, и 22 колонки, и джоба работает абсолютно нормально, все преобразования работают за секунду, а заливка данных в GreenPlum 13 минут работает. Сами понимаете,12к строк всего, а если там будет 100к строк? Что тогда
Пример кода загрузки в GreenPlum:
def df_to_db_old(df, schema, table, force=False):
from sqlalchemy import text
engine = get_gp_engine() # get_gp_engine функция возвращающая движок от psycopg3
df.to_sql(con=engine,
index=False,
schema=schema,
name=table,
if_exists='append',
chunksize=16000)
# Создание DataFrame
df_5000_rows = pd.DataFrame(data)
df_to_db(df=df_5000_rows, schema='team_test', table='shust_test')
Оказывается, что при использовании стандартной функции to_sql, данные записываются в базу данных построчно, грубо говоря командой INSERT, а параметр chunksize задаёт через сколько строк сделать коммит в БД. При таком использовании время вставки 5к строк составляет:
Время вставки (1): 190.558109998703 секунд
Нам конечно же такая тема не понравилась, так как очень долго. Начал думать
def df_to_db(df, schema, table):
def psql_insert_copy(table, conn, keys, data_iter): #функция передаваемая в мотод
from io import StringIO
import csv
# получаем подключение DBAPI, которое может обеспечить курсор
dbapi_conn = conn.connection
with dbapi_conn.cursor() as cur:
s_buf = StringIO()
writer = csv.writer(s_buf)
writer.writerows(data_iter)
s_buf.seek(0)
columns = ', '.join('"{}"'.format(k) for k in keys)
if table.schema:
table_name = '{}.{}'.format(table.schema, table.name)
else:
table_name = table.name
sql = 'COPY {} ({}) FROM STDIN WITH CSV'.format(
table_name, columns)
cur.copy_expert(sql=sql, file=s_buf)
engine = gp_engine() # gp_engine функция возвращающая движок от psycopg2
df.to_sql(con=engine,
index=False,
schema=schema,
name=table,
if_exists='append',
method=psql_insert_copy)
df_to_db(df=df_5000_rows, schema='team_test', table='shust_test')
В данном случае - время резко сократилось в +100500 раз, и чем больше данных, тем данный метод будет быстрее.
Время вставки (2): 0.3825254440307617 секунд
Это метод хорош, когда данных немного, от силы до пары гигабайт. Если данных больше, то лучше сохранять данные в сыром виде и уже с помощью PXF подгружать данные в GreenPlum.
Интересно, а GPT напишет такой код? Хмммм....
Please open Telegram to view this post
VIEW IN TELEGRAM
Ребзя, спешал фор ю🫵 , скидываю классные и четкие лекции от Павла Ковалёва, который является "ТехЛидом/Дата Архитектором" и по-совместительству моим руководителем в компании "Сравни". И, кстати, эти лекции взяты с канала SravniTech, подписываться не заставляю, но, в общем и целом, там есть, на что посмотреть. За рекламу, к сожалению мне ни кто не платил, все сделано от чистого сердца, к вам😘
Честно, только вчера, наконец-то, досмотрел 3-ю лекцию. И знаете что🤔 ? Я нашел себе новую цель, а именно хотя бы приблизиться к знаниям Паши🧑🎓 . Ну вы это поймете, когда увидите, как он четко и по существу рассказывает о технологиях.
Я решил вам скинуть видосы прям в телегу, чтобы долго не искать, и чтобы все лекции были в одном месте. А так, вот вам ссылки на видео в Ютубчике, с коротким описанием о чем лекция.
📺 Лекция 1. Особенности OLTP и OLAP, основные понятия курса.
Тут он рассказывает о базовых определениях хранилищ данных, устройстве WDH, основы оптимизации SQL-запросов и даёт реальные практические кейсы, даже есть те, с которыми я столкнулся лично, по оптимизации неэффективных запросов.
📺 Лекция 2. Архитектурный обзор инструментов для построения DWH.
Ну как понятно из названия лекции, Паша прям проходится по инструментам, чтобы построить хранилище. Вот небольшая часть этих инструментов: Hadoop, Spark, Trino, Databricks, Amazon Athena, Amazon Redshift и Google Bigquery.
📺 Лекция 3. Техники оптимизации аналитических SQL-запросов (Greenplum, Clickhouse).
А это прям божественная лекция, тут четко, по полочкам и с примерами рассказывается о Greenplum, Clickhouse. С точки зрения GP я, в принципе, все знал, а вот про CH... такие подробности можно узнать, наверное, только из доки, да и то не факт. Короче, тут и для меня открыли Америку.🤯
Честно, только вчера, наконец-то, досмотрел 3-ю лекцию. И знаете что
Я решил вам скинуть видосы прям в телегу, чтобы долго не искать, и чтобы все лекции были в одном месте. А так, вот вам ссылки на видео в Ютубчике, с коротким описанием о чем лекция.
Тут он рассказывает о базовых определениях хранилищ данных, устройстве WDH, основы оптимизации SQL-запросов и даёт реальные практические кейсы, даже есть те, с которыми я столкнулся лично, по оптимизации неэффективных запросов.
Ну как понятно из названия лекции, Паша прям проходится по инструментам, чтобы построить хранилище. Вот небольшая часть этих инструментов: Hadoop, Spark, Trino, Databricks, Amazon Athena, Amazon Redshift и Google Bigquery.
А это прям божественная лекция, тут четко, по полочкам и с примерами рассказывается о Greenplum, Clickhouse. С точки зрения GP я, в принципе, все знал, а вот про CH... такие подробности можно узнать, наверное, только из доки, да и то не факт. Короче, тут и для меня открыли Америку.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Господа и дамы, в прошедшее воскресенье я был приглашен моим другом и товарищем по команде Евгением Виндюковым на подкаст🎙 . Мы классно пообщались, и в целом я получил супер офигенный опыт, который хочется пожелать каждому.👍
Уже завтра в 12:00 вы сможете его посмотреть на Ютубе(на других площадках его не будет из-за их неактуальности). К сожалению, наш с Евгением сервак с "Ускорителем Ютуба" пошёл по одному месту😭 , и зачастую пинг просто безумно зашкаливает, и ловим постоянно TimeOut.⛔️
Мы прекрасно понимаем, что такой продукт мы не можем поддерживать в дальнейшем, так как количество пользователей растет, а строить полномасштабную архитектуру не хочется. Поэтому, мы как добросовестные блогеры начали искать выход. И нашли...
У меня есть знакомый, который построил полноценную архитектуру🔐 для "ускорения Ютуба" с полноценной масштабируемостью и техподдержкой, поэтому даже, если у вас что-то пойдёт не так, вас просто переведут на другой сервер , и вы будете спокойно работать там.
В дальнейшем мы с Евгением планируем проводить стримы именно на Ютубе и стримить будем именно через этот сервис. (Скорость ебэшая!🏎 )
Поэтому переходите в бот @NamelessNetwork_bot и получайте ключ с 2мя неделями пробного доступа + не забудьте вставить промкод "DE", с ним вы получите еще 2 дополнительные недели использования, и того целый месяц бесплатного пользования!🌐
Это тот сервис, который реально можем посоветовать!💪
Уже завтра в 12:00 вы сможете его посмотреть на Ютубе(на других площадках его не будет из-за их неактуальности). К сожалению, наш с Евгением сервак с "Ускорителем Ютуба" пошёл по одному месту
Мы прекрасно понимаем, что такой продукт мы не можем поддерживать в дальнейшем, так как количество пользователей растет, а строить полномасштабную архитектуру не хочется. Поэтому, мы как добросовестные блогеры начали искать выход. И нашли...
У меня есть знакомый, который построил полноценную архитектуру
В дальнейшем мы с Евгением планируем проводить стримы именно на Ютубе и стримить будем именно через этот сервис. (Скорость ебэшая!
Поэтому переходите в бот @NamelessNetwork_bot и получайте ключ с 2мя неделями пробного доступа + не забудьте вставить промкод "DE", с ним вы получите еще 2 дополнительные недели использования, и того целый месяц бесплатного пользования!
Это тот сервис, который реально можем посоветовать!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
84722_vpn
Привет, я 84722_vpn — надежный сервис для безопасного подключения к сети Интернет без ограничения трафика 🔥
26.01.2025 меня позвали на подкаст "За пределами Кода", и сегодня он уже в доступе
Там поднимается куча интересных вопросов
Обязательно, через недельку, а может через 2, я проведу стрим
Подписывайтесь на наши каналы:
Евгений Виндюков
Владимир Шустиков
Полезные ссылки:
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
DATA ENGINEER: Из военки в IT | Интервью с DE в Сравни
Гость: Владимир, Data Engineer в Сравни
Полезные ссылки:
Roadmap для Data Engineer: https://github.com/halltape/HalltapeRoadmapDE
✅ Подписывайтесь на наши каналы:
• Евгений, DE: https://t.me/halltape_data
• Владимир, DE: https://t.me/Shust_DE
00:00:00…
Полезные ссылки:
Roadmap для Data Engineer: https://github.com/halltape/HalltapeRoadmapDE
✅ Подписывайтесь на наши каналы:
• Евгений, DE: https://t.me/halltape_data
• Владимир, DE: https://t.me/Shust_DE
00:00:00…
Ютуб😘 полон видосов -"В IT не попасть", "IT пузырь лопнул", "Без опыта в IT не попасть" и т.д. Вот я захотел это проверить!🤔
Представляю вашему внимаю видео😳 , а в дальнейшем и цикл видео, где я создал резюме без опыта работы, но с опытом обучения, в котором указал все шаги своего собственного обучения в прошлых годах. При этом, моей легендой будет обычный 28-летний инженер высоковольтных линий, ну или что-то похожее, что вообще с IT не связано, у которого есть полноценная семья.
Ежедневно🕛 я буду откликаться на вакансии "Инженера данных", либо на вакансии, где стек будет похож. Я буду просить доход в 130к на чисто джуновскую позицию. По мне для получения первого опыта и начальной зарплаты — идеально.😎
В конце каждого месяца я буду подводить итог, сколько откликов сделал, и сколько компаний меня позвало на техническое собеседование.🙏
Итоги первого месяца уже здесь!
Представляю вашему внимаю видео
Ежедневно
В конце каждого месяца я буду подводить итог, сколько откликов сделал, и сколько компаний меня позвало на техническое собеседование.
Итоги первого месяца уже здесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Поиск работы в IT без опыта работы. Итоги января 2025 года.
Задача данного видео показать, можно ли войти в IT без опыта работы ли нет. Для этого я создал резюме "Data Engineer" на HH и добавил 1 год обучающего опыта, чтобы обходить HR-овские запреты. За 2 недели я откликнулся на более чем 250 вакансий, а сколько…
Сказать, что я офигел — ничего не сказать. Видос мне скинул Женёк, сам бы я фиг до него добрался. Если в 2-х словах - на канале "Декабрист IT" недавно закончился стрим, где разбирали мой видос из прошлого поста.
Прям круто, мотивирует продолжать делать контент. А что немало важно — критика, которую я учту в следующих видосах.
Минутка славы закончилась
Please open Telegram to view this post
VIEW IN TELEGRAM
Ща лучшие братишки мне скинули песню, и не смог пройти мимо неё и не поделиться с вами этим шедевром🤘
Слова просто бомба, прям🫠 :
Слова просто бомба, прям
Володя валит не по годам
Вове горы по пояс
А море - ниже колена
Володя дамам и господам
Не встречается дважды
Похожего феномена
.......
Вова - это какая-то сага
Вова - определенный тираж
За плечами Володи - шарага
В перспективе - далекий вояж
Про него по телевизору
Выпуски в новостях
Хотели парочку минут
Записали пару часов
Please open Telegram to view this post
VIEW IN TELEGRAM
Яндекс Музыка
Володя
Bakhtin • Трек • 2023
Смыл задачи был такой: необходимо перенести таблицу из одной базы данных(SnowFlake) в другую(GreenPlum).
И вроде как, ничего сложного, выгружаем данные из БД в ДФ, и с помощью функции "df_to_db", описанной в прошлом кейсе, заносим в GreenPlum.
И я не могу с вами не согласиться, тем не менее, есть одно НО — таблица в жатом виде весит 2Гб (>26млн. строк). А оперативная память-то у нас не резиновая! Для такой таблицы не хотелось стряпать всякие PXF или gpfdist (тем более в облаке его сделать нельзя, так как нет доступа к самому серверу). А еще, из-за проблем с GP, не хотелось, чтобы запрос упал и транзакция откатилась.
Было принято решение "разделять и властвовать", но как правильно разделить, чтобы хотя бы данные равномерно были в каждой batch'е, так еще и автоматизировать весь процесс. Не буду долго размусоливать (я благодарен Александру, за то, что рассказал о таком способе), но данный процесс, легко решается с помощью "остатка от деления".
count_parts = 10
for i in range(0, count_parts):
query = f"""
select *
from sf_table_shust
where col_id % {count_parts} = {i}
"""
df = query_sf_sql(query)
print(f'Загрузка части {i}')
df_to_db(df,'team_test','gp_table_shust')
print(f'Конец загрузки части {i}')
В данном примере я разделяю таблицу с помощью конструкции col_id % {count_parts} = {i} на 10 равных частей и выгружаю данные в ДФ, после чего прогружаю их в GP.
1) не требуется много времени на настройку трансляции;
2) загружая части данных поочередно, мы избегаем загрузки всей таблицы сразу, что снижает нагрузку на память;
3) если трансляция прервётся (например, из-за ошибки), можно перезапустить процесс только для недогруженных частей;
4) можно динамически изменять количество частей (count_parts) в зависимости от размера БД;
5) нахождение остатка от деления, является простой операцией с маленькой стоимостью.
Но к сожалению не обошлось и без минусов
1) col_id должно быть числовым значением с высокой кардинальностью, чтобы разбиение было максимально равномерным;
2) col_id не должно содержать NULL значений, иначе их нужно будет загружать отдельно;
3) код загружает части поочередно, что может быть медленно, поэтому для прям больших таблиц такой метод не подойдет.
Как приезжаю в офис, постоянно что-то узнаю новое. Вот именно после таких нетривиальных решений, реально понимаешь, что опыт работы — это не то,сколько лет ты провтыкал в стену, а то — сколько ты перенял опыта у более скилловых ребят.
P.S. Как перееду в Москву, буду в разы чаще появляться в офисе. Чую,таким образом через год
Please open Telegram to view this post
VIEW IN TELEGRAM
Инфа, актуально в большинстве своём для "вкатунофф"!😅
Мне много кто уже писал следующую фразы:
- "Жаль, что я наткнулся(ась) на ваш RoadMap уже после покупки курсов..."
- "А есть ли у тебя менторство?"
Для лучшей индексации нашего роадмапа, решил записать для вас видео, где я по полочкам прошёлся по каждому пункту, плюс показал формат менторства, которое было у меня и того чего мне изначально не хватало в платном курсе который я проходил, когда хотел стать "Аналитиком данных".
По вопросам менторства пишите в личку
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Как вкатиться в профессию Data Engineer? Полный RoadMap(Курс) + информация по менторству.
Иди прямо по списку, чтобы стать Data Engineer! И рекомендуй своим друзьям
https://github.com/halltape/HalltapeRoadmapDE
Не забудь подписаться на телеграмм и ютуб каналы:
Мой:
- https://t.me/Shust_DE
- https://youtube.com/@shust_de?si=5g6kBVfIy4XcRFSj…
https://github.com/halltape/HalltapeRoadmapDE
Не забудь подписаться на телеграмм и ютуб каналы:
Мой:
- https://t.me/Shust_DE
- https://youtube.com/@shust_de?si=5g6kBVfIy4XcRFSj…
#соБЕСики
🔖 Вакансия: Data Engineer
🔖 Компания: "Сбер для экспертов"
🔖 Предполагаемая вилка: неизвестно (просил 150 на руки, но думаю до 260 просить можно)
🔖 Месяц прохождения собеседования: Февраль 2025
🔖 Формат работы: Полный офис на Кутузе
🔖 Требования вакансии:
⏺ Знание SQL на уровне разработчика;
⏺ Опыт работы с Jira и процессами DevOps;
⏺ Опыт разработки витрин данных в АС Greenplum или похожих СУБД (Teradara, Oracle, SAS EG и др.);
⏺ Опыт работы с ETL-инструментами (Informatica PC, Oracle Data Integrator итд.);
⏺ Общее понимание BigData и Hadoop;
⏺ Опыт разработки и общее понимание процессов с точки зрения архитектуры;
⏺ Понимание методологии Agile.
🔖 Этапы собеседований:
HR➡️ Интервью + Тех.собеседование(TeamLead, TechLead)
🔖 Процесс прохождения:
HR сам меня нашел на резюме с учебным опытом работы(о нём я рассказывал в этом видео). Без какого-либо созвона сразу предложил встретиться с лидами.
На созвоне спросили- кто такой, про опыт(которого у меня нет по легенде), начал рассказывать, что учусь 2 года и т.д. Рассказали о проекте и что данная вакансия больше уходит в разработку, так как у них сейчас проект сделать какую-то офигенную штуку в jupiter notebook, которая будет "волшебным" образом делать всё, что захотят аналитики.(Скажу честно говорили об этой фичи на очень высоком уровне, что я даже не понял, что нужно делать вообще). Могу сказать точно, что с описанием вакансии их ожидания вообще никак не связаны. Витрины, хранилища и всё такое, это не про данную вакансию.
🔖 Вопросы технического собеседования:
⏺ Что такое Hadoop и из каких компонентов он состоит?
⏺ Что такое YARN?
⏺ Для чего нужен Apache Oozie?
⏺ Что такое Hive и объясни, как он работает с данными?
⏺ Что такое Spark?
⏺ Объясни парадигму MapReduce и почему Spark пришел ей на замену?
⏺ Как работает HSFD? Для чего нужна NameNode, Secondary NameNode? Нам необходимо считать текстовый файл из HDFS, объясни, что будет происходить?
⏺ Что такое фактор репликации в HDFS и для чего он нужен?
⏺ Для чего нужен Hive?
⏺ Что такое партиционирование и что оно из себя представляет в Hadoop?
⏺ Что делает Shuffle в Spark? Между чем передаются данные?
⏺ Как передать UDF?
После этого была устная задача на Spark:
⏺ Есть таблица, в ней могут быть любые данные (пропущенные, повторяющиеся строки и т.д.), необходимо каждую строку пронумеровать уникальным идентификатором вне зависимости от данных, которые находятся в этой строке.
🔖 Время прохождения собеседования: 1 час (5 минут я рассказал о себе + 10 минут о проекте + 45 минут техническая часть)
🔖 Итоговое мнение:
Данное собеседование проходилось в рамках цикла видео "Поиск работы в IT без опыта". Собеседование вообще не понравилось. Чисто долбили в связку Hadoop и Spark, при этом в самой вакансии про Spark в требованиях ничего не сказано ("общее понимание BigData и Hadoop"). При этом про GreenPlum и другие БД вообще не спрашивали, хотя они в требованиях есть. В любом случае, как первая работа зашла, при условии, если Вы ответили все четко. Все данные вопросы, за исключением устной задачи, рассматриваются в 2х следующих видео: Hadoop, Spark.
Бот для ускорения просмотра YouTube:
@NamelessNetwork_bot
Промокод: DE
(дополнительные 2 недели бесплатно)
HR
HR сам меня нашел на резюме с учебным опытом работы(о нём я рассказывал в этом видео). Без какого-либо созвона сразу предложил встретиться с лидами.
На созвоне спросили- кто такой, про опыт(которого у меня нет по легенде), начал рассказывать, что учусь 2 года и т.д. Рассказали о проекте и что данная вакансия больше уходит в разработку, так как у них сейчас проект сделать какую-то офигенную штуку в jupiter notebook, которая будет "волшебным" образом делать всё, что захотят аналитики.(Скажу честно говорили об этой фичи на очень высоком уровне, что я даже не понял, что нужно делать вообще). Могу сказать точно, что с описанием вакансии их ожидания вообще никак не связаны. Витрины, хранилища и всё такое, это не про данную вакансию.
После этого была устная задача на Spark:
Данное собеседование проходилось в рамках цикла видео "Поиск работы в IT без опыта". Собеседование вообще не понравилось. Чисто долбили в связку Hadoop и Spark, при этом в самой вакансии про Spark в требованиях ничего не сказано ("общее понимание BigData и Hadoop"). При этом про GreenPlum и другие БД вообще не спрашивали, хотя они в требованиях есть. В любом случае, как первая работа зашла, при условии, если Вы ответили все четко. Все данные вопросы, за исключением устной задачи, рассматриваются в 2х следующих видео: Hadoop, Spark.
Бот для ускорения просмотра YouTube:
@NamelessNetwork_bot
Промокод: DE
(дополнительные 2 недели бесплатно)
Please open Telegram to view this post
VIEW IN TELEGRAM