Разыгрываю книжку "Spark в действии", которую даже сама читала в электронном варианте
Готова переслать по России или лично вручить в Мск!
Нужно:
Итоги будут подведены 17.06.2024
Удачи🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35 11
Как ПСИ проходили
🦆 Мы сейчас мигрируем витрины данных на свой кластер и перед каждым релизом проходим ПСИ.
🤓 ПСИ - это приемо-сдаточное испытание, где проверяют, а что за данные, а как, а почему, а с какой целью, а какой атрибутивный состав, а какая логика расчета и тому подобное. Что потоки с витринами успешно запускаются без падений.
👉 И вот во время созвона мы обнаруживаем, что для установки на прод не хватает release notes, которые автоматом проставляются. Т.к. это все для нас впервые, то мы не в курсах, как их быстро добавить.
🏃♂️ Пишу коллеге, который нам помогал по этому поводу, - не читает. Звоню(!):
- Как проставить release notes?
- Надо запустить доп. пайплайн в Jenkins
- Где его найти?
- Лежит рядом с основным (хотя бы это знаем)
Иду в Jenkins, как заполнять поля - непонятно, смотрю примеры, делаю по аналогии, запускаю - отработало!!!
👨🦯 Лид тайм от реагирования до исполнения: 16 минут.
ПСИ успешно пройдено.
Mic Drop
- Как проставить release notes?
- Надо запустить доп. пайплайн в Jenkins
- Где его найти?
- Лежит рядом с основным (хотя бы это знаем)
Иду в Jenkins, как заполнять поля - непонятно, смотрю примеры, делаю по аналогии, запускаю - отработало!!!
ПСИ успешно пройдено.
Mic Drop
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23🏆3🤝2👻1
Что спросить на собесе?
У HR, команды и руководителя.
Недавно общались с коллегами и накидали свой список, что бы мы спросили/что обычно спрашивают:
1️⃣ Офис/удаленка/гибрид
Условия согласования
Обязательно ли с 9 до 18 или можно двигать, дорабатывать попозже
2️⃣ Выдается ли техника?
Как вам доставят?
Есть ли офис в вашем городе?
3️⃣ Новая команда или на замену?
Команда может укомплектовываться, но может и разваливаться
4️⃣ Состав команды
Сколько человек?
Сколько дата инженеров/аналитиков, других ролей?
Разбивка по джунам/мидлам/сеньорам?
5️⃣ Кто обучает?
Кто лидит в команде: техлид, тимлид, продукт оунер?
Кто делает code review?
6️⃣ Аутсорс/аутстаф?
7️⃣ Какие инструменты, технологии?
Скорее всего, к этому моменту вам уже все рассказали
8️⃣ Скрам или канбан?
Канбан означает, что команда типо сервисная, много ad hoc-ов
Есть ли Jira, Confluence или что-то подобное?
9️⃣ Есть ли системный аналитик?
Если нет, то придется вам копаться в документации и общаться с заказчиками
1️⃣ 0️⃣ Кто заказчики?
От кого ТЗ?
Аналитики, бизнес, другие подразделения
1️⃣ 1️⃣ Описание рабочего дня
Какие задачи?
Бывают ли переработки?
1️⃣ 2️⃣ Какие KPI для сотрудника?
Как расти в компании?
1️⃣ 3️⃣ Есть ли скрам-мастер?
Проводится ли ретро?
Глобальное демо на несколько команд? (например, раз в квартал)
1️⃣ 4️⃣ Культура командных посиделок
Есть ли чатик с мемами?^^
🐾 Есть еще что добавить?
У HR, команды и руководителя.
Недавно общались с коллегами и накидали свой список, что бы мы спросили/что обычно спрашивают:
Условия согласования
Обязательно ли с 9 до 18 или можно двигать, дорабатывать попозже
Как вам доставят?
Есть ли офис в вашем городе?
Команда может укомплектовываться, но может и разваливаться
Сколько человек?
Сколько дата инженеров/аналитиков, других ролей?
Разбивка по джунам/мидлам/сеньорам?
Кто лидит в команде: техлид, тимлид, продукт оунер?
Кто делает code review?
Скорее всего, к этому моменту вам уже все рассказали
Канбан означает, что команда типо сервисная, много ad hoc-ов
Есть ли Jira, Confluence или что-то подобное?
Если нет, то придется вам копаться в документации и общаться с заказчиками
От кого ТЗ?
Аналитики, бизнес, другие подразделения
Какие задачи?
Бывают ли переработки?
Как расти в компании?
Проводится ли ретро?
Глобальное демо на несколько команд? (например, раз в квартал)
Есть ли чатик с мемами?^^
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32 6💯2
Media is too big
VIEW IN TELEGRAM
Кое-кому сегодня удача особенно подмигнула,
и нашим победителем становится...
Улмас Киличов
Напишу, обсудим все детали.
И буду думать, что бы еще интересного замутить)
А пока всем хорошего дня и недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18 3❤1
У нас закупаются корпоративные курсы, и я сейчас прохожу очередной по де) До этого не сталкивалась с семейством колонок, везде пишут по-разному, так что держите ликбез
Columnar, Column-oriented DB
Тут должно быть все понятно. Данные хранятся рядышком поколоночно, поэтому работают быстрее.
Это реляционная база.
Примеры: ClickHouse, Vertica, Snowflake, Google BigQuery.
Wide-column store
А вот это уже NoSQL штука.
У каждой строки есть ключ:
Maria
Для каждого ключа задается семейство колонок:
personal_info, address
Для каждого семейства - сами колонки:
personal_info <- firstname, lastname, age
address <- city, street
Сами колонки можно добавлять на лету, заполнять у строк по-разному или вообще оставлять пустыми (null не хранится).
Примеры: HBase, Cassandra, Google BigTable, ScyllaDB.
Тут статейка очень старенькая, но есть полезности.
По терминологии так до конца и непонятно. Вроде как и те, и другие - колоночные. Но первые реляционные, а вторые - нет. Как-то так)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5
Вопросы на middle+
😵 Недавно позвали на собес, решила сходить для контента🤩 Для меня он был прям сильно нестандартным, т.к. больше гоняли по кейсам "что будешь делать, если" и задавали нетривиальные вопросы по технике.
🚩 Ниже краткий списочек тем и вопросов:
DataOps
Синхронная/асинхронная репликация
Селективный запрос
Покрывающий индекс
Всегда ли план запроса отражает правду?
Zookeeper
MapReduce
Spark
Что делать, если надо показать отчет за месяц, а данных за один день нет?
Что делать, если после загрузки в dwh данных в 3 раза больше?
Золотая запись
PL/SQL процедуры
Движки в КХ
MDM (master data management)
Data Lineage
Data Vault/Anchor/Звезда
В каких случаях что выбирать?
ACID
WAL (Write-Ahead Logging)
Что сложнее - update vs insert?
Физические джойны
Какую бд выберешь, если ...?
Что делать, чтобы сравнить данные с источником, api?
Как будешь решать нестандартную задачу?
👍 Можете порассуждать в комментах)
#собес
DataOps
Синхронная/асинхронная репликация
Селективный запрос
Покрывающий индекс
Всегда ли план запроса отражает правду?
Zookeeper
MapReduce
Spark
Что делать, если надо показать отчет за месяц, а данных за один день нет?
Что делать, если после загрузки в dwh данных в 3 раза больше?
Золотая запись
PL/SQL процедуры
Движки в КХ
MDM (master data management)
Data Lineage
Data Vault/Anchor/Звезда
В каких случаях что выбирать?
ACID
WAL (Write-Ahead Logging)
Что сложнее - update vs insert?
Физические джойны
Какую бд выберешь, если ...?
Что делать, чтобы сравнить данные с источником, api?
Как будешь решать нестандартную задачу?
#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27❤5❤🔥3
Вышел подкаст со мной!
Теперь я звездочка😊
Теперь я звездочка
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from IT-минималист | Аналитик данных с нуля (Daniil Kukushkin)
007. Надо брать и делать с Data engineer
Пообщались с Айгуль Сибгатуллиной. Сейчас Айгуль работает в Сбербанке на позиции Data Engineer.
Также ведет свой канал в телеграмм @data_engineerette.
Получился очень любопытный путь — несколько стажировок от фронтенда до бекэнда, опыт в консалтинг, потом аналитиком. И сейчас уже инженер данных.
Как так получилось? Мы обсуждали сегодня в подкасте!
👇 Слушайте, где удобно! 👇
Яндекс.Музыка
Youtube
VK
Приятного прослушивания! ❤️
#podcast
Пообщались с Айгуль Сибгатуллиной. Сейчас Айгуль работает в Сбербанке на позиции Data Engineer.
Также ведет свой канал в телеграмм @data_engineerette.
Получился очень любопытный путь — несколько стажировок от фронтенда до бекэнда, опыт в консалтинг, потом аналитиком. И сейчас уже инженер данных.
Как так получилось? Мы обсуждали сегодня в подкасте!
👇 Слушайте, где удобно! 👇
Яндекс.Музыка
Youtube
VK
Приятного прослушивания! ❤️
#podcast
❤28👍11 6❤🔥1⚡1🔥1🆒1
Просто захотелось записать крутые словечки, которые мы используем внутри команды) Некоторые могут быть общепринятыми, но мы с коллегами постарались накидать своих особенных:
aboba - почти дефолтный нейминг всяких тестовых табличек, файликов, переменных
Багулина - баг
Базёнка - база данных
Биг боссы - руководители
Грядка - ряд рабочих мест
Джирафлоу - перемещение задачек по статусам в джире
Дикий интернет - интернет нормального человека
Дип дайв - образовательная техническая встреча, где кто-то из коллег рассказывает про крутые штуки
Дорогие коллеги - устойчивое выражение по отношению к коллегам
Жира - джира
ЗНОпс (запрос на обслуживание) - история с заведением заявок, получением согласований
Каминг-аут - релиз
Кодулина/эскуэлина - кусочек кода
kutuza moment - когда мы переехали с кутузы в другой офис, все казалось непривычным: мыло само не льется, вода сама не включается. это выражение описывает такие моменты, когда ты стоишь ждешь мыла или забыл выключить кран
Миграция/интеграция с хх - когда коллега собирается уйти
Ореховая леди - женщина, которая с утра раскладывает орешки
Особый стендап - прощальный стендап
Падаван - джун
Плов - Airflow
Пользак - пользователь
Проблема будущих нас - как Скарлетт, которая подумает обо всем завтра
Синк - встреча нескольких команд, чтобы обсудить статусы
Скам мастер - скрам мастер
Смотритель зоопарка, сопровод - сопровождение
С улицы - когда коллега пришел не из Сбера
Технина - у нас был коллега, который работал в яндексе. там у них проводились техтолики (типо techtalk). и я как-то предложила для Толика придумать даму сердца - Нину. теперь у нас есть технина))
Трубочист - девопсер
Узя - Oozie
Улучшайзинг - процесс улучшения
Фактура, собрать фактуру - поресерчить, прийти с конкретными кейсами и вопросами
Хабуп - Hadoop
Хадуповоды - название нашего чатика, где мы решаем проблемы с кластером
Хомяк - папка /home
Человек-джоба - когда ручками запускаешь то, что можно автоматизировать
Ярн киллер, придет ярн киллер - одно из требований безы к витринкам - если они падают, то должен быть процесс, который придет и убьет поток. и наоборот - если поток падает, процесс приходит и убивает расчет витринки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17😁12❤2👍2🤡2👻2❤🔥1
Кидаю ссылочку на буст канала
Пишите свои пожелания по реакциям)
https://news.1rj.ru/str/boost/data_engineerette
Пишите свои пожелания по реакциям)
https://news.1rj.ru/str/boost/data_engineerette
Telegram
дата инженеретта
Проголосуйте за канал, чтобы он получил больше возможностей.
❤3🔥2 2 2💯1 1
Какие запросы дадут МАКСИМАЛЬНЫЙ результат?
* email уникален, в email есть null, бэктики поддерживаются
* email уникален, в email есть null, бэктики поддерживаются
Anonymous Poll
35%
count(email)
9%
count(`email`)
14%
count('email')
11%
count("email")
16%
count(distinct email)
1%
count(distinct `email`)
4%
count(distinct 'email')
7%
count(distinct "email")
45%
count(1)
19%
count(-100)
count('email')
count(1)
count(-100)
Есть табличка emails:
1 hello@gmail.com
2 null
3 null
4 hello@mail.ruemail ==
`email` == "email" Эти три конструкции одинаковы, они обозначают само поле.
Кавычки нужны, когда название поля - это ключевое слово или когда написано на русском.
По условию email - уникальное, поэтому
count(email) == count(distinct email)
Поэтому в нашем примере по всем этим 6 запросам будет ответ 2.
Ответ - 2.
count('email') - здесь мы подаем на вход строку с названием 'email' (не поле!)
Т.е. на вход каунту будет так:
1 email
2 email
3 email
4 emailМы по сути считаем количество строк.
Ответ - 4.
Аналогично для этих двух запросов:
count(1)
count(-100)
Вообще неважно, что писать в скобках, хоть '2340sdjf2фыа934!-3/'. Результат всегда - это количество строк.
1 -100
2 -100
3 -100
4 -100Ответ - 4.
Ну и в count(distinct 'email') получается, что мы берем уникальные строки 'email'. А они везде одинаковые.
Ответ - 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16💯2 2❤1
Неделю назад решила достать свой акк на литкоде и начать решать задачки. Потому что когда-нибудь это может пригодиться на лайв кодинге, а я уже буду без стресса и во всеоружии
Ага, про это я писала в своем канале)
И хочется достичь такого же уровня:
Ага, я уже решала такую задачу и помню, как она решается
Кстати, в самом начале увидела задачку про палиндром, которую спрашивали у моего коллеги на собесе.
Пока решаю простые задачки и планирую их все добить (бесплатные). Python - чтобы подумать, SQL - чтобы отдохнуть
А у вас как дела? Есть тут чемпионы?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27 3
В команду маркетинга Сбера ищем разработчика продуктовых витрин.
Мы создаем Martech инструменты для сквозной аналитики, позволяющие отследить весь пользовательский путь от просмотра баннера до первой транзакции.
Формат: Офис (по болезни можно дома)
• Проектировать и разрабатывать продуктовые витрины данных
• Мониторить и оптимизировать процессы загрузки, преобразования данных и сборки витрин
• Контролить качество данных
• Разрабатывать инструменты для автоматизации рутинных задач, связанных с обработкой данных
• Разрабатывать и поддерживать внутренние сервисы
• SQL на продвинутом уровне
• Cтек технологий Big Data (Hadoop, Spark, Hive/Impala) и любой СУБД
• Знание понятий и концепций DWH
• Python (PySpark, Pandas, REST API)
• Airflow/Dagster/Oozie
• BitBucket/GitHub
• Bash
• Опыт работы с веб-аналитическими данными, данными мобильных приложений, рекламных кабинетов (YandexMetrica, AppMetrica или др. кликстримы)
• Знание банковского бизнеса
• Опыт работы по Agile
• Классная и дружная команда
• Непростые задачи и быстрый рост
• Льготные условия кредитования и ипотеки
• Бесплатная подписка СберПрайм+
• Скидки на продукты компаний-партнеров
• ДМС с первого дня и льготное страхование для близких
• Корпоративное обучение, тренинги, митапы, доступ к библиотеке
• Современный офис в центре Москвы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4💯1
SQL писать умеют все
Не так давно в X5 услышала такое мнение:
Читая это сейчас, я склонна согласиться. Но когда первые слова на первых минутах - это такое категоричное заявление, то невольно задумываешься, а комфортно ли работается в такой атмосфере.
Что думаете?
Не так давно в X5 услышала такое мнение:
SQL писать умеют все.
Даже Junior DA умеет поднять спарк сессию и писать запросы.
DE нужен, чтобы разбираться под капотом - если много данных, сложные расчеты, писать не в лоб, а эффективно, учитывать узкие места, продумывать обновление данных, решать проблемы с замедлением расчетов.
Читая это сейчас, я склонна согласиться. Но когда первые слова на первых минутах - это такое категоричное заявление, то невольно задумываешься, а комфортно ли работается в такой атмосфере.
Что думаете?
Как написать джойн без джойна?
📃 Пусть у нас есть таблица с клиентами (client_id, name) и заказами (order_id, amount, client_id).
Нужно вывести имя клиента и сумму всех его заказов. Если нет заказов - то 0.
🌷 Подход №1 - join (все очень просто)
🌷 Подход №2 - union
Когда что-то нужно посчитать
🟢 группируем отдельно по датасетам
🟢 проставляем null в отсутствующих колонках
🟢 юнионим
🟢 группируем по ключу, если бы мы джойнили
🟢 навешиваем нужные функции сверху
На этапе final у нас будет примерно такое:
✏️ На моем крошечном датасете в плане запросов в постгре косты второго запроса меньше в 2 раза.
В первом почти все ресурсы тратятся на Hash Join.
#sql_tips
Нужно вывести имя клиента и сумму всех его заказов. Если нет заказов - то 0.
SELECT name, SUM(COALESCE(amount, 0)) AS total
FROM clients c
LEFT JOIN orders o
ON c.id = o.client_id
GROUP BY name
ORDER BY name
Когда что-то нужно посчитать
WITH grouped AS (
SELECT
client_id AS id,
null AS name,
SUM(amount) AS total
FROM orders
GROUP BY client_id
),
final AS (
SELECT id, name, null AS total FROM clients
UNION
SELECT id, null AS name, total FROM grouped
)
SELECT
MAX(name) AS name,
COALESCE(MAX(total), 0) AS total
FROM final
GROUP BY id
ORDER BY name
На этапе final у нас будет примерно такое:
id name amount
1 Alice null
2 Bob null
3 Cathy null
1 null 2000
2 null 5000
В первом почти все ресурсы тратятся на Hash Join.
#sql_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍8💯2❤1
repartition vs coalesce
💗 Вопрос у каждого первого.
Нужны для изменения количества партиций в датафрейме. Как итог - файлов на диске.
По умолчанию это 200, можно переопределить при создании спарк сессии конфигом
Посмотреть количество партиций можно так:
📚 Пример. У нас есть датафрейм [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] с 4 партициями:
Partition A: 1, 2
Partition B: 3, 4, 5
Partition C: 6, 7
Partition D: 8, 9, 10
Делаем так:
Repartition
🖇 делает партиции равномерными
🖇 может увеличивать и уменьшать количество партиций
🖇 под капотом шафл
В нашем примере циферки из каждой партиции размазались двум финальным партициям - это и есть шафл (перетасовка данных между экзекьюторами).
Именно за счет шафла работает первое и второе.
Coalesce
🖇 равномерность не гарантирована
🖇 может только уменьшать
🖇 данные не шафлит, а склеивает
Файлы клеятся друг за другом (без шафла), поэтому умеет только уменьшать (из склеенных файлов обратно расклеить уже нельзя).
В нашем примере B просто приклеилось к A, а D к C
#spark_tips
Нужны для изменения количества партиций в датафрейме. Как итог - файлов на диске.
По умолчанию это 200, можно переопределить при создании спарк сессии конфигом
spark.sql.shuffle.partitionsПосмотреть количество партиций можно так:
df.rdd.getNumPartitions()
Partition A: 1, 2
Partition B: 3, 4, 5
Partition C: 6, 7
Partition D: 8, 9, 10
Делаем так:
df_nums.repartition(2)
Partition ABC: 1, 3, 5, 6, 8, 10
Partition XYZ: 2, 4, 7, 9
Repartition
В нашем примере циферки из каждой партиции размазались двум финальным партициям - это и есть шафл (перетасовка данных между экзекьюторами).
Именно за счет шафла работает первое и второе.
df_nums.coalesce(2)
Partition A: 1, 2, 3, 4, 5
Partition C: 6, 7, 8, 9, 10
Coalesce
Файлы клеятся друг за другом (без шафла), поэтому умеет только уменьшать (из склеенных файлов обратно расклеить уже нельзя).
В нашем примере B просто приклеилось к A, а D к C
#spark_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13 5🤔1
В первой таблице 7 строк, во второй - 5. Сколько строк выведется по каждому типу джойна минимально?
inner, left, right, full
inner, left, right, full
Anonymous Quiz
10%
7, 7, 5, 35
47%
0, 7, 5, 12
6%
0, 5, 7, 12
34%
0, 7, 5, 35
3%
35, 7, 5, 35
Коллеги в комментах правильно отметили, что при фулле будет 7 строк, поэтому правильно:
Минимально - если ключи в таблицах разные:
t1: 1, 2, 3, 4, 5, 6, 7
t2: 8, 9, 10, 11, 12
По-любому 7 строк точно будет, т.к. left берет все из левой таблицы. Минимально - если строки сметчились 1:1 (каждый id встречается один раз) или не сметчились.
По-любому 5 строк точно будет, логика та же.
Тут формула: max(n, m) = max(7, 5) = 7
В нашем первом примере хоть и будет 12 (нет ни одного одинакового id), но во втором случае будет меньше:
t1: 1, 2, 3, 4, 5, 6, 7
t2: 1, 2, 3, 4, 5
Спасибо за бдительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Начинаю серию постов про офисы. Телефон переполняется фоточками, поэтому настала пора рассказать и поудалять)
Сегодня про Авито
🗝 Как попала?
Просто увидела в ит-чатиках приглос и заполнила гугл-формочку.
🐾 Где?
Офис на Белорусской, занимают 5 этажей.
🎤 Что было?
Всего было человек 15, для нас устроили экскурсию по всем этажам. Втихаря со стойки утащила ленточку для пропуска с лого😅
Каждый этаж имеет свою тематику: шведские острова, деревянный этаж, этаж переработанных штук, деревенский стайл. Переговорки в честь городов и языков программирования.
🧩 Есть IT Bar, куда можно прийти за техникой, спортзал, бильярдный стол, муз. инструменты и комната с настолками. Мерч покупается за всякие активности типо провести экскурсию, сделать что-то крутое.
Фото 4: место, где можно поспать
Фото 5: лампа из ручек
Фото 7: скрытый коридор
Фото 8: купленное на авито
В конце был квиз на скорость, где я выиграла бутылочку и наклейки🙂
Нашла ещё больше крутых фоток тут
Сегодня про Авито
Просто увидела в ит-чатиках приглос и заполнила гугл-формочку.
Офис на Белорусской, занимают 5 этажей.
Всего было человек 15, для нас устроили экскурсию по всем этажам. Втихаря со стойки утащила ленточку для пропуска с лого
Каждый этаж имеет свою тематику: шведские острова, деревянный этаж, этаж переработанных штук, деревенский стайл. Переговорки в честь городов и языков программирования.
Фото 4: место, где можно поспать
Фото 5: лампа из ручек
Фото 7: скрытый коридор
Фото 8: купленное на авито
В конце был квиз на скорость, где я выиграла бутылочку и наклейки
Нашла ещё больше крутых фоток тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍8