дата инженер кто это и чем занимается
Дата-инженеры в бизнесе: кто они и чем занимаются?
Данные — один из активов организации. Поэтому вполне вероятно, что перед вашей командой в какой-то момент могут возникнуть задачи, которые можно будет решить, используя эти данные разными способами, начиная с простых исследований и вплоть до применения алгоритмов машинного обучения.
И хоть построение крутой модели — неотъемлемо важная часть, но все же это не залог успеха в решении подобных задач. Качество модели в большой степени зависит от качества данных, которые собираются для нее. И если 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, приглашаем изучить программы наших курсов:
Data Engineer — кто это и чем он занимается?
По мере того как данные становились стратегически важной составляющей бизнеса, а их сбор и анализ помогали получать все больше полезных инсайтов, наука о данных обрастала сразу несколькими сложными и похожими специализациями. На первый взгляд, они могут показаться дублирующими профессиями со смежными функциями: Data Scientist или исследователь данных, Data Analyst или аналитик данных, Data Engineer или инженер данных, инженер по машинному обучению, администратор баз данных и так далее. Все эти специалисты используют в своей работе основной ресурс — данные, и их функции действительно пересекаются, но если приглядеться, то переплетающиеся роли довольно четко разделены, а с развитием Data Science и ее ответвлений они получат еще более ясное разграничение.
Data Scientist vs. Data Engineer
Возьмем, например, исследователя данных и инженера данных. Один другому просто необходим. Первый умеет анализировать данные, выстраивать модели и создавать хранилища данных. Но оказавшись лицом к лицу с поставленной бизнес-задачей, ему понадобятся именно те данные, с помощью которых он смог бы найти решение. К его большому сожалению, готовых к использованию данных в его распоряжении не будет, но они будут скрыты в различных хранилищах, и их еще нужно будет собрать и очистить. Вот здесь-то ему и понадобится помощь дата-инженера. Data Engineer отвечает за создание, обработку и поддержку каналов или пайплайнов данных, которые необходимы Data Scientist для анализа и решения бизнес-задач.
Как это работает в реальности?
Представим, что некая компания занимается продажей диванов широкого ассортимента через сайт. Всякий раз, когда посетитель сайта нажимает на тот или иной диван, создается новый элемент данных. Теперь дата-инженеру нужно определить как собрать эти данные, какого типа метаданные будут добавлены для каждого клика-события и как хранить данные в удобном для доступа формате. А Data Scientist должен будет взять данные о том, какие клиенты купили те или иные диваны и использовать их, чтобы предсказать вариант идеального дивана для каждого нового посетителя сайта.
Или предположим, что вы дата-инженер в компании Rebu, молодом конкуренте Uber. Ваши пользователи заказывают такси через приложение. Итак, они отмечают пункт назначения, одновременно, в приложении у водителя отображается маршрут, затем он забирает пассажиров и высаживает их в пункте назначения. Далее пассажиры оплачивают поездку и имеют возможность поставить оценку водителю. Чтобы эта система работала, вам понадобится:
Допустим, ваш коллега, Data Scientist, хочет проанализировать историю действий пользователя вашего сервиса и посмотреть какие действия связаны с пользователями, которые тратят больше денег. Чтобы помочь коллеге, вам необходимо будет собрать информацию логов сервера и журналов событий приложения. Для этого вам нужно:
Для этого вам необходимо создать пайплайн, который сможет “проглотить” логи приложений и логи сервера в реальном времени, проанализировать их и соотнести с конкретным пользователем. Затем вам необходимо будет хранить проанализированные логи в базе данных так, чтобы по их можно было без труда запросить по API.
Исходя из этих примеров, Data Engineer фокусируется на построении инфраструктуры и архитектуры генерации данных, а Data Scientist сосредотачивает свои усилия на взаимодействии с инфраструктурой данных. К несчастью для обоих, компании часто ограничиваются должностью Data Scientist и не создают отдельную позицию Data Engineer. Такой подход грозит чрезмерной загруженностью первого, когда до 80% времени он тратит на добычу и обработку данных, закапываясь в массивах информации.
Что именно делает Data Engineer и какие инструменты он использует?
Итак, инженер по данным сможет:
Как видно из обязанностей дата-инженера, его роль в компании особенно важна — он участвует в начальной и финальной стадиях анализа данных, а также поддерживает созданные пайплайны. Работая в паре с Data Scientist, инженер данных в разы повышает эффективность его деятельности. Для этого профессиональному дата-инженеру нужно иметь сильные навыки программирования, чтобы писать качественный, “чистый” код, а также глубокое понимание экосистемы больших данных и распределенных систем. Если коротко, то его навыки это — Hadoop, MapReduce, Hive, Pig, дата-стриминг, NoSQL и SQL. Вместе с тем, ему не обязательно владеть фундаментальными знаниями в математике и навыками построении алгоритмов, в отличие от исследователя данных. Среди его инструментов часто можно увидеть: SAP, Oracle, Cassandra, MySQL, Redis, Riak, PostgreSQL, MongoDB, neo4j, Hive и Sqoop.
Таким образом, ни одна компания, желающая создать свой data-отдел или заняться качественным исследованием данных и извлечением из них полезной информации, не сможет получить результат, наняв одного лишь Data Scientist — необходимо будет найти и привести в компанию специалиста, который бы наладил процесс сбора данных и организовал их предварительную подготовку. К тому же он сможет взять на себя рутинные задачи по обработке данных и, тем самым, высвободить время для качественных моделей, которые так любит строить исследователь данных.
В data engineering приходят люди с разным опытом и образованием: это и computer science, и computer engineering, а также математика, экономика и часто — бизнес-аналитика. В любом случае, даже если вы считаете, что чтобы стать Data Engineer, вам чего-то недостает, но желание развиваться в этой области перевешивает, идите к своей цели и развивайтесь в этом направлении. Каждый профессионал в какой-то момент начинает со своего уникального набора навыков и знаний, а зачастую целеустремленность и талант играют решающую роль в его становлении.
Если вы хотите развиваться в области Data Engineering, то обратите внимание на наш курс, позволяющий полностью освоить новое направление.
Освойте практический курс по одному из самых перспективных направлений в Big Data и станьте востребованным специалистом.Скидка по промокоду BLOG 5%.
Кто такой Data Engineer и как им стать
Сделали адаптированный перевод статьи Oleksii Kharkovyna о том, кто такие инженеры данных и что нужно знать новичкам, чтобы освоить профессию.
Инженер данных — смесь аналитика данных и дата-сайентиста. Он отвечает за извлечение, преобразование, загрузку данных и их обработку. Профессия востребована в первую очередь благодаря высоким зарплатам и спросу среди работодателей. Дальше расскажу, какие задачи выполняют инженеры данных, чем отличаются от дата-сайентистов и что нужно знать тем, кто хочет освоить специальность.
Что такое инженерия данных
«Учёный может открыть новую звезду, но не может создать её. Для этого ему пришлось бы обратиться к инженеру», — Гордон Линдсей Глегг
Из названия специальности следует, что она связана с данными: их доставкой, хранением и обработкой. Главная задача инженера — подготовить надёжную инфраструктуру для данных. В ИИ-иерархии потребностей инженерия данных занимает первые две-три ступени: сбор, перемещение и хранение, подготовка данных.
Что делает инженер данных
С появлением Big Data сфера ответственности специалистов по обработке данных изменилась. Если раньше инженеры писали большие SQL-запросы и обрабатывали данные с помощью таких инструментов, как Informatica ETL, Pentaho ETL, Talend, то теперь от них ждут большего. Специалисту нужно отлично знать SQL и Python, желательно — Java/Scala, иметь опыт работы с облачными платформами, в частности Amazon Web Services.
И это только самое необходимое. Логично предположить, что инженеры должны разбираться в разработке программного обеспечения и серверной разработке. В компании, которая генерирует большой объем данных из разных источников, задача инженера — организовать сбор информации, её обработку и хранение.
Инструменты могут отличаться — всё зависит от объема данных, их скорости поступления и неоднородности. Многие компании вообще не работают с большими данными, поэтому в качестве централизованного хранилища используют базу SQL (PostgreSQL, MySQL) с небольшим количеством скриптов, которые направляют данные в репозиторий.
У IT-гигантов вроде Google, Amazon, Facebook или Dropbox требования к кандидатам выше:
Основной упор в технологиях Big Data сейчас делают на их обработку в условиях высокой нагрузки. Поэтому компании повысили требования к отказоустойчивости системы.