чем занимается data engineer
Кто такой дата-инженер?
Эксперт в Data Engineering.
Дата-инженер – это человек, который организует потоки загрузки и обрабатывает данные. Как он это делает, что для этого нужно уметь, и насколько такая деятельность востребована, разбираемся с дата-инженером X5 Retail Group Максимом Кереметом.
Что делает дата-инженер?
Дата-инженер (Data Engineer) участвует в начальной и финальной стадиях анализа данных, обеспечивает их работу на инфраструктуре компании. Он занимается ETL-процессами, то есть обрабатывает данные: достает ( extract) их из сырых источников, трансформирует ( transform) и загружает ( load).
После предварительной обработки, очистки от повторов, ошибок, ненужных уточнений, он автоматизирует выполнение скриптов и, если нужно, настраивает мониторинги, алерты (сигналы о том, что в моделях что-то пошло не так), задает расписание, по которому сервис или программа будут работать с данными (шедуллит).
Задачи в компаниях могут отличаться: где-то инженер только обрабатывает данные, а где-то выполняет и программистскую работу: внедряет новые модели и переучивает старые.
Помимо сбора и обработки дата-инженер организует хранение данных. Для этого он строит архитектуру хранилищ – базы данных с таблицами, в которых они разбиты по смыслу. Дата-сайентистам это облегчает доступ к обработанным наборам данных (признакам), с помощью хранилища проще и быстрее масштабировать модели.
Чем дата-инженер отличается от дата-сайентиста?
Задачи дата-сайентиста и дата-инженера находятся на разных этапах работы с данными. Дата-сайентист – это исследователь, который придумывает, как решить задачу бизнеса. Например, прогнозирует, когда покупатель придет в магазин в следующий раз. Он готовит дата-сет, извлекает признаки, экспериментирует с моделями, делает пилотный запуск модели.
Для того, чтобы дата-сайентисту было с чем экспериментировать, дата-инженер готовит данные. Они обычно скрыты в хранилищах. Когда модель готова, дата-инженер масштабирует успешные решения на гораздо бОльшие объемы чем тренировочный датасет
Модель также нужно периодически обновлять: делать отчеты, чтобы бизнес мог ежедневно использовать этот труд, по мере необходимости обновлять признаки. Этим тоже занимается дата-инженер.
Читайте также: Чем занимается дата-инженер X5 Retail Group?
Где он нужен?
Везде, где работа с данными помогает бизнесу развиваться и зарабатывать.
Дата-инженеры особенно востребованы в телекоме, ритейле, банкинге – здесь генерируют больше всего данных. Конечно же, такие спецы нужны в интернет- и транспортных компаниях, маркетинге.
Часто небольшие компании ищут специалиста, который берет на себя задачи и дата-инженера, и дата-сайентиста. Но с ростом бизнеса обязанности разводятся между разными ролями: аналитиками, сайентистами и инженерами.
Пример задачи дата-инженера:
Коллеге дата-сайентисту нужно узнать, какие действия совершают пользователи, оставляющие больше всего денег в приложении такси. Чтобы дата-сайентист смог проанализировать историю их действий и сделать прогноз, дата-инженеру необходимо собрать нужную информацию из приложения. Для этого он:
Для этого необходимо создать пайплайн (процесс сбора, трансформации и загрузки в базу данных), который в реальном времени сможет собрать логи приложений и сервера, проанализировать их и соотнести с конкретным пользователем. Проанализированные логи дата-инженер собирает в базу данных так, чтобы их можно было без труда запросить по API.
Насколько это востребовано?
Из-за того, что данные растут в геометрической прогрессии, компании придумывают новые, более эффективные способы работы с ними. Для этого им нужны не только мощные платформы для хранения, но и сотрудники, которые оптимизируют процессы, поставляют уже подготовленные данные, ускоряя дальнейшую работу дата-сайентистов. Поэтому спрос на специалистов в этой сфере только увеличивается, а зарплаты в этом направлении – одни из самых высоких в IT.
Согласно отчету DICE о технических вакансиях за 2020 год количество вакансий дата-инженера выросло на 50% по сравнению в 2019 годом. Это самый большой показатель среди других профессий.
Сколько получает дата-инженер?
Зарплаты зависят от уровня: в среднем джуниоры получают 100-150 тыс. руб, миддл-специалисты 150-250 тыс. руб, а синьор-профессионалы 250-300 тыс. руб, основываясь на данных из сообщества ODS.
На июнь 2021 года на hh.ru почти тысяча вакансий по запросу data engineer.
Научитесь собирать данные из разных источников, помогайте аналитикам строить гипотезы и принимать бизнес-решения. Дополнительная скидка 5% по промокоду BLOG.
Что ему нужно знать?
По мнению Максима Керемета, на российском рынке дата-инженер – это человек, который может все по чуть-чуть: и программировать, и работать с базами данных, и провести несложную аналитику (построить дашборд в Power BI или Tableau), и самостоятельно написать приложение, которое может работать.
Традиционно дата-инженер работает с таблицами, поэтому ему необходимо знать, как писать SQL-запросы, разбираться в видах баз данных. В основном он сталкивается с реляционными (наборы данных, связанных между собой по значению) и колоночными (данные связаны не по строкам, а по колонкам) базами данных.
Наиболее популярная система управления реляционной БД – PostgreSQL, для колоночных – ClickHouse, он быстрый и используется для аналитики и логирования событий.
Дата-инженер должен хорошо знать Python: он умеет читать таблицы из источников на компьютере, понимает язык на уровне базовых структур, ООП. Python также нужен для того, чтобы писать веб-сервисы, чтобы в дальнейшем работать с продуктивизацией моделей. Кроме того, с помощью языка можно разрабатывать новые сервисы и модели, которые отслеживают стабильность уже работающих программ.
Плюсом будет знание Scala — язык эффективен в промышленных масштабах, когда становится важна скорость обработки данных. В этом Python уступает.
Нужно владеть инструментами экосистемы Hadoop (система управления базами данных Hive или фреймворк Spark) – они помогают работать с большими данными, которые невозможно обрабатывать на одном локальном компьютере из-за объемов и производительности. Для них используются кластерные машины с более мощными показателями.
Чтобы запускать уже готовые сервисы, не требующие доработки, на разных компьютерах, дата-инженеру нужно уметь использовать Docker. Он «упаковывает» сервис, написанный на локальном компьютере, в контейнер, и его можно воспроизводить на компьютере коллеги или кластерной машине.
А для автоматизации работы в команде дата-инженер использует GitLab.
Откуда приходят в дата-инженеры?
Максим Керемет добавляет: « Можно переквалифицироваться из дата-сайентиста, если хочется больше развиваться с точки зрения программирования и построить какой-то сервис или продукт. Кроме того, если надоело постоянно выполнять разные ситуативные задачи и хочется сконцентрироваться на среднесрочных проектах на несколько месяцев, дата-инженер — хороший вариант».
Плюсы и минусы профессии
Как начать?
Новичкам без бэкграунда в IT попасть в профессию сложно, так как она требует серьезной технической подготовки: нужно писать хотя бы на Python, владеть инструментами автоматизации.
Для специалиста в этой области важны знания алгоритмов и структур данных. Алгоритмические задачи хорошо выстраивают мышление, знание синтаксиса языка и его возможностей. Алгоритмы данных можно изучить на бесплатном курсе на Coursera.
Кроме того, на Coursera можно познакомиться с базовыми понятиями, научиться строить пайплайны (выстраивать весь ETL-процесс переноса данных из одного места в другое), разобраться в том, что такое базы данных и как устроены системы облачных хранилищ.
Можно попробовать самостоятельно определить траекторию обучения, ориентируясь на Road map профессии. C ее помощью удобно систематизировать, какими навыками вы уже овладели, а какие нужно подтянуть или выучить с нуля.
Полезные ссылки:
Либо можно пройти полноценный курс по Data Engineering. На нем есть главное – практика, благодаря которой вы сможете не просто в теории разобраться с программами и продуктами, которыми используют в профессии, но отработать технологии на реальных задачах и применить их в проекте.
Освойте перспективную профессию за 10 недель или усильте ваши навыки дата-инженера.
Дата-инженеры в бизнесе: кто они и чем занимаются?
Данные — один из активов организации. Поэтому вполне вероятно, что перед вашей командой в какой-то момент могут возникнуть задачи, которые можно будет решить, используя эти данные разными способами, начиная с простых исследований и вплоть до применения алгоритмов машинного обучения.
И хоть построение крутой модели — неотъемлемо важная часть, но все же это не залог успеха в решении подобных задач. Качество модели в большой степени зависит от качества данных, которые собираются для нее. И если Data Science применяется не ради спортивного интереса, а для удовлетворения реальных потребностей компании, то на это качество можно повлиять на этапе сбора и обогащения данных. И за это отвечает скорее не дата-сайентист, а другой специалист — дата-инженер.
В этой статье я хочу рассказать о роли дата-инженера в проектах, связанных с построением моделей машинного обучения, о зоне его ответственности и влиянии на результат. Разбираемся на примере Яндекс.Денег.
Какие роли есть в Data Science-проекте?
К сожалению, не для всех названий ролей есть аналоги в русском языке. Если у вас в компании есть устоявшееся русское название, например, для Data Ingest, то поделитесь им в комментариях.
Например, можно выделить следующие роли:
Что такое Data Science-проект?
Это ситуация, когда мы пытаемся решить какую-то задачу при помощи данных. То есть во-первых, эта задача должна быть сформулирована. Например, один из наших проектов начался с того, что нам нужно было распознавать аварии в приеме платежей (далее распознавание аварий будет упоминаться как исходная задача).
Во-вторых, должен быть набор конкретных данных, датасет, на котором мы будем пытаться ее решать. Например, есть список операций. Из него можно построить график количества операций по каким-нибудь временным периодам, например, часам:
Сам график с количеством не требует дата-сайенса, но уже требует дата-инженерии.
Не будем забывать, что помимо простых показателей, таких как количество, показатели, которые нас интересуют, могут быть достаточно сложными в получении: например, количество уникальных пользователей или факт наличия аварии в магазине-партнере (который достоверно определять силами человеческого мониторинга весьма дорого).
При этом данных с самого начала может быть много либо их в какой-то момент внезапно становится много, а в реальной жизни — они еще и продолжают непрерывно копиться даже после того, как мы сформировали для анализа какой-то датасет.
Как, наверное, для любой проблемы сначала стоит посмотреть, есть ли на рынке готовые решения. И во многих случаях окажется, что они есть. Например, существуют системы, которые умеют детектить простои тем или иным способом. Однако та же Moira не справлялась полностью с нашими проблемами (из коробки она ориентируется на статические правила — которыми задать наши условия достаточно сложно). Поэтому мы решили писать классификатор самостоятельно.
И дальше в статье рассматриваются те случаи, когда нет готового решения, которое полностью бы удовлетворяло возникшим потребностям, или если даже оно есть, то мы не знаем о нем или оно нам недоступно.
В этот момент из инженерной области, где что-то разрабатываем, мы переходим в RnD-область, где пытаемся изобрести алгоритм или механизм, который будет работать на наших данных.
Порядок действий в DS-проекте
Давайте посмотрим, как это выглядит в реальной жизни. Дата-сайентический проект состоит из следующих этапов:
В проектах, которыми мы занимались, один такой круг занимал по времени около 1,5-2 недель.
Дата-сайентист точно участвует на этапе построения модели и при оценке результата. Все остальные этапы чаще ложатся на плечи дата-инженера.
Теперь рассмотрим этот процесс подробнее.
Сбор датасета
Как мы сказали, без набора данных бессмысленно начинать любой Data Science. Давайте посмотрим, из каких данных получился график с количеством платежей.
В нашей компании применяется микросервисная архитектура, и в ней для дата-инженера наиболее важный момент, что нужные данные еще нигде не собраны воедино. Каждый микросервис льет свои события в брокер, в нашем случае Kafka, ETL оттуда их забирает, кладет в DWH, откуда их забирают модели.
Каждый микросервис знает только свой кусочек: один компонент знает про авторизацию, другой — про реквизиты и так далее. Задача дата-инженера — эти данные собрать в одном месте и объединить их друг с другом, чтобы получился необходимый датасет.
В реальной жизни микросервисы появились неспроста: такой атомарной операции, как платеж, не существует. У нас даже есть такое внутреннее понятие, как процесс платежа — последовательность операций для его выполнения. Например, в эту последовательность могут входить следующие операции:
Действия могут быть как явно существующими в этом процессе, так и суррогатными (расчетными).
И в нашем примере мы решили, что нам будет достаточно знать два следующих шага:
На этом этапе собранные данные уже могут представлять ценность не только для главной задачи. В нашем примере уже здесь без применения ML можно брать количество процессов, прошедших каждый из этих шагов, поделить друг на друга и рассчитывать таким образом success rate.
Но если вернуться к главной задаче, то после того, как мы решили выделить эти два события, следует научиться извлекать данные из этих событий и куда-то их складывать.
На этом этапе важно помнить, что большинство моделей классификаций на входе принимает матрицу признаков (набор m чисел и n столбцов). А события, которые мы получаем, например, из Kafka, — это текст, а не числа, и из этого текста матрицу не составишь. Поэтому изначально текстовые записи нужно преобразовать в числовые значения.
Составление корректного датасета состоит из следующих этапов:
Например, в поле «дата» появился платеж 1970 года, и такую запись, скорее всего, не следует учитывать (если мы в принципе хотим использовать время как признак).
Это можно делать разными способами. Например, полностью исключить строки с неправильными значениями. Это хорошо работает, но могут потеряться остальные данные из этих строк, хотя они могут быть вполне полезными. Или, другой вариант — сделать что-то с неправильными значениями, не трогая остальные поля в этой строчке. Например, заменить на среднее или мат. ожидание по этому полю или вовсе обнулить. В каждом случае принять решение должен человек (дата-сайентист или дата-инженер).
Следующий шаг — разметка. Это тот момент, когда мы помечаем аварии как «аварии». Очень часто это самый дорогостоящий этап в сборе датасета.
Предполагается, что изначально мы знаем откуда-нибудь про аварии. Например, операции идут, затем их количество резко падает (как на картинке выше), а потом они восстанавливаются снова, и кто-то нам говорит: «Вот там и была авария». А дальше нам хочется автоматически находить идентичные кейсы.
Интереснее ситуация, когда операции прекращаются не полностью, а только частично (количество операций не падает до нуля). В этом суть детектинга — отслеживать изменение структуры исследуемых данных, а не их полное отсутствие.
Возможные неточности разметки приводят к тому, что классификатор будет ошибаться. Почему? Например, у нас есть две аварии, а размечена только одна из них. Соответственно, вторую аварию классификатор будет воспринимать как нормальное поведение и не рассматривать как аварию.
В нашем случае мы специально собираем вручную историю аварий, которую потом мы используем в разметке.
В итоге после серий экспериментов одним из решений задачи поиска простоев получился следующий алгоритм:
И не стоит забывать про последний пункт — актуализацию данных. Особенно если проект длинный, готовится несколько недель или месяцев, датасет может устареть. И важно, когда весь пайплайн готов, обновить информацию — выгрузить данные за новый период. Именно в этот момент становится важна роль дата-инженера как автоматизатора, чтобы все предыдущие шаги можно было дешево повторить на новых данных.
Только после этого дата-инженер передает эстафету (вместе с датасетом) дата-сайентисту.
А дальше.
Что же делает дата-сайентист?
Предполагаем, что проблема у нас сформулирована, дальше дата-сайентисту ее нужно решить.
В этой статье я не буду детально затрагивать вопрос выбора модели. Но для тех, кто только начинает работать с ML, отмечу, что есть множество подходов к выбору модели.
Если путем настройки гиперпараметров дата-сайентисту не удалось добиться хорошего качества работы выбранной модели, то нужно выбрать другую модель либо обогатить датасет новыми фичами — значит, требуется пойти на следующий круг и вернуться на этап расчета фич или еще раньше — на этап сбора данных. Угадайте, кто это будет делать?
Предположим, что модель выбрана, отскорена, дата-инженеры оценивают результат и получают обратную связь. Заканчивается ли на этом их работа? Конечно, нет. Приведем примеры.
Сначала немного лирического отступления. Когда я учился в школе, учительница любила спрашивать:
— А если все спрыгнут с крыши, ты тоже спрыгнешь?
Спустя какое-то время я узнал, что для этой фразы есть стандартный ответ:
— Ну… вам же никто не мешает говорить фразу, которую все говорят.
Однако после изобретения машинного обучения ответ может стать более предсказуемым:
— А если все спрыгнут с крыши, ты тоже спрыгнешь?
[изобретено машинное обучение]
— Да!
Такая проблема возникает, когда модель ловит не ту зависимость, которая существует в реальной жизни, а ту, которая характерна только для собранных данных.
Причина, по которой модель ловит не те зависимости, которые есть в реальной жизни, могут быть связаны с переобучением либо со смещением в анализируемых данных.
И если с переобучением дата-сайентист может побороться самостоятельно, то задача дата-инженера в том, чтобы найти и подготовить данные без смещения.
Но кроме смещения и переобучения могут возникнуть и другие проблемы.
Например, когда после сбора данных мы пытаемся на них обучиться, а потом выясняется, что один из магазинов (где проходят платежи), выглядит вот так:
Вот такие у него операции, и все другие наши размышления про падения количества операций, как признака аварии, просто бессмысленны, так как в данном примере есть периоды, где платежей нет совсем. И это нормальный период, тут нет ничего страшного. Что это для нас означает? Это как раз и есть тот случай, когда указанный выше алгоритм не работает.
На практике это частенько означает, что следует перейти к другой проблеме — не той, что мы изначально пытались решать. Например, что-то сделать до того момента, как мы начинаем искать аварии. В рассматриваемой задаче пришлось сначала привести кластеризацию магазинов по профилю: часто платящие, редко платящие, редко платящие со специфическим профилем и другие, но это уже другая история. Но важно, что это, в первую очередь, тоже задача для дата-инженера.
В итоге
Основной вывод, который можно сделать из рассказанного выше, что в реальных ML-проектах дата-инженер играет одну из важных ролей, а возможностей по решению бизнес-задач у него зачастую даже больше, чем у дата-сайентиста.
Если сейчас вы разработчик и хотите развиваться в направлении машинного обучения, то не сосредотачивайтесь исключительно на дата-сайенсе и обратите внимание на дата-инженерию.
Data Engineer и Data Scientist: что умеют и сколько зарабатывают
Вместе с Еленой Герасимовой, руководителем факультета «Data Science и аналитика» в Нетологии, продолжаем разбираться, как взаимодействуют между собой и чем различаются Data Scientist и Data Engineer.
В этом материале поговорим о том, какими знаниями и навыками должны обладать специалисты, какое образование ценится работодателями, как проходят собеседования, а также сколько зарабатывают дата-инженеры и дата-сайентисты.
Что должны знать сайентисты и инженеры
Профильное образование для обоих специалистов — Computer Science.
Любой специалист по данным — дата-сайентист или аналитик — должен уметь доказывать корректность своих выводов. Для этого не обойтись без знания статистики и связанной со статистикой базовой математики.
Машинное обучение и инструменты анализа данных незаменимы в современном мире. Если привычные инструменты недоступны, нужно иметь навыки быстрого изучения новых инструментов, создания простых скриптов для автоматизации задач.
Важно отметить, что специалист по работе с данными должен эффективно донести результаты анализа. В этом ему поможет визуализация данных или результатов проведённых исследований и проверки гипотез. Специалисты должны уметь создавать диаграммы и графики, использовать инструменты визуализации, понимать и разъяснять данные из дашбордов.
Для инженера данных на первый план выходят три направления.
Алгоритмы и структуры данных. Важно набить руку в написании кода и использовании основных структур и алгоритмов:
Сколько получают инженеры и сайентисты
Доход инженеров по обработке данных
В России в начале карьеры зарплата обычно не меньше 50 тыс. рублей в регионах и 80 тыс. в Москве. На этом этапе не требуется опыт, кроме пройденного обучения.
Через 1‒2 года работы — вилка 90‒100 тыс. рублей.
Вилка увеличивается до 120‒160 тыс. через 2‒5 лет. Добавляются такие факторы, как специализация прошлых компаний, размер проектов, работа с big data и прочее.
После 5 лет работы легче искать вакансии в смежных отделах или откликаться на такие узкоспециализированные позиции, как:
Доход дата-сайентистов
Исследование рынка аналитиков компании «Нормальные исследования» и рекрутингового агентства New.HR показывает, что специалисты по Data Science получают в среднем большую зарплату, чем аналитики других специальностей.
В России начальная зарплата дата-сайентиста с опытом работы до года — от 113 тыс. рублей.
В качестве опыта работы сейчас также учитывается прохождение обучающих программ.
Через 1‒2 года такой специалист уже может получать до 160 тыс.
Для сотрудника с опытом работы от 4‒5 лет вилка вырастает до 310 тыс.
Как проходят собеседования
На западе выпускники программ профессионального обучения проходят первое собеседование в среднем через 5 недель после окончания обучения. Около 85% находят работу через 3 месяца.
Процесс прохождения собеседований на вакансии инженера данных и дата-сайентиста практически не различается. Обычно состоит из пяти этапов.
Резюме. Кандидатам с непрофильным предыдущим опытом (например, из маркетинга) необходимо для каждой компании подготовить подробное сопроводительное письмо или иметь рекомендации от представителя этой компании.
Технический скрининг. Проходит, как правило, по телефону. Состоит из одного-двух сложных и столько же простых вопросов, касающихся текущего стека работодателя.
HR-интервью. Может проходить по телефону. На этом этапе кандидата проверяют на общую адекватность и способность общаться.
Техническое собеседование. Чаще всего проходит очно. В разных компаниях уровень позиций в штатном расписании отличается, и называться позиции могут по-разному. Поэтому на этом этапе проверяют именно технические знания.
Собеседование с техническим директором / главным архитектором. Инженер и сайентист — стратегические позиции, а для многих компаний к тому же новые. Важно, чтобы потенциальный коллега понравился руководителю и совпадал с ним во взглядах.
Что поможет сайентистам и инженерам в карьерном росте
Появилось достаточно много новых инструментов по работе с данными. И мало кто одинаково хорошо разбирается во всех.
Многие компании не готовы нанимать сотрудников без опыта работы. Однако кандидаты с минимальной базой и знанием основ популярных инструментов могут получить нужный опыт, если будут обучаться и развиваться самостоятельно.
Полезные качества для дата-инженера и дата-сайентиста
Желание и умение учиться. Необязательно сразу гнаться за опытом или менять работу ради нового инструмента, но нужно быть готовым переключиться на новую область.
Стремление к автоматизации рутинных процессов. Это важно не только для продуктивности, но и для поддержания высокого качества данных и скорости их доставки до потребителя.
Внимательность и понимание «что там под капотом» у процессов. Быстрее решит задачу тот специалист, у которого есть насмотренность и доскональное знание процессов.
Кроме отличного знания алгоритмов, структур данных и пайплайнов, нужно научиться мыслить продуктами — видеть архитектуру и бизнес-решение как единую картину.
Например, полезно взять любой известный сервис и придумать для него базу данных. Затем подумать, как разработать ETL и DW, которые наполнят её данными, какие будут потребители и что им важно знать о данных, а также как покупатели взаимодействуют с приложениями: для поиска работы и знакомств, прокат автомобилей, приложение для подкастов, образовательная платформа.
Позиции аналитика, дата-сайентиста и инженера очень близки, поэтому переходить из одного направления в другое можно быстрее, чем из других сфер.
В любом случае, обладателям любого ИТ-бэкграунда будет проще, чем тем, у кого его нет. В среднем взрослые мотивированные люди переучиваются и меняют работу каждые 1,5‒2 года. Легче это даётся тем, кто учится в группе и с наставником, по сравнению с теми, кто опирается лишь на открытые источники.
От редакции Нетологии
Если присматриваетесь к профессии Data Engineer или Data Scientist, приглашаем изучить программы наших курсов: