Дата инжиниринг что это
Кто такой 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 сейчас делают на их обработку в условиях высокой нагрузки. Поэтому компании повысили требования к отказоустойчивости системы.
Дата-инженеры в бизнесе: кто они и чем занимаются?
Данные — один из активов организации. Поэтому вполне вероятно, что перед вашей командой в какой-то момент могут возникнуть задачи, которые можно будет решить, используя эти данные разными способами, начиная с простых исследований и вплоть до применения алгоритмов машинного обучения.
И хоть построение крутой модели — неотъемлемо важная часть, но все же это не залог успеха в решении подобных задач. Качество модели в большой степени зависит от качества данных, которые собираются для нее. И если 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 Engineering и как начать работу в этой сфере
Чем конкретно занимается инженер данных, что он должен уметь, чтобы хорошо зарабатывать, и что важно знать в начале карьеры — рассказывает декан факультета Сергей Ширкин.
Кто такой Data Engineer
Инженер данных – незаменимый сотрудник для любой команды, занимающейся Data Science. От дата-инженера зависит, насколько удобно будет построен процесс работы с данными в проекте. Этот специалист отвечает за сбор, хранение и обработку данных, выстраивает их кратчайший путь к дата-сайентистам – чтобы коллеги не отвлекались от своих основных задач. Поэтому команды, где есть дата-инженеры, работают быстрее и эффективнее тех, где при подготовке данных не хватает разделения труда.
Какую проблему рынка решает новый факультет
Бизнесу очень нужны специалисты по обработке данных, а вузы либо не готовят их вообще, либо обучают сильно устаревшим технологиям. Когда в компании остро не хватает дата-инженеров, на эти позиции зачастую берут самоучек. Но даже при таком сценарии многие вакансии долго остаются незакрытыми и вопросы дата-инжиниринга приходится решать дата-сайентистам или смежным IT-специалистам. Таким образом, на рынке труда есть явный запрос, который стоит удовлетворить.
Отличия от других факультетов направления Data Science
Дата-инженеры проходят подготовку за один год, потому что им не нужно углубляться в математику и тонкости построения моделей машинного обучения. Для сравнения, студенты факультетов искусственного интеллекта и аналитики Big Data учатся полтора года.
Инженеры данных заняты несколько другими вещами, нежели классические дата-сайентисты — IT-инфраструктурой, базами данных (SQL и NoSQL), оптимизацией процессов ETL (Extract, Transform, Load – «извлечение, преобразование, загрузка»), автоматизацией сбора данных из интернета и построением систем обработки данных в реальном времени.
Сходство между факультетами Data Engineering и аналитики Big Data в том, что и те и другие проводят большую часть обучения со стеком Hadoop/Spark. Именно эти технологии активно применяются в больших компаниях, и специалистов по работе с ними по-прежнему не хватает.
Что будет уметь выпускник факультета Data Engineering и каким будет его портфолио
Будущим инженерам предстоит выполнять курсовые проекты по итогам каждой четверти. Темы проектов будут связаны с актуальными рабочими процессами современных компаний.
В первой четверти студент познакомится с IT-инфраструктурой и параллельно научится собирать данные. Для закрепления знаний он создаст парсер (обработчик) интернет-сайтов – систему пополнения баз данных актуальной информацией из различных источников.
Во второй четверти учащиеся построят собственные хранилища для аналитической системы. Курсовая работа будет посвящена построению полного конвейера данных (pipeline) для Business intelligence (BI) — созданию системы перевода сырой информации в удобную для человеческого восприятия форму.
Третья четверть будет полностью посвящена работе с «большими данными». Сначала студенты освоят инструменты экосистемы Hadoop, а затем изучат Spark и познакомятся с обработкой потоков данных методами Big Data.
В заключительной четверти будущие выпускники изучат обработку данных в реальном времени и углубятся в инфраструктуру для работы с данными, доводя свои знания до продвинутого уровня.
Где работать
Нас часто спрашивают, на какой уровень знаний и зарплат можно рассчитывать после выпуска из GeekUniversity — Junior или Middle. Если студент активно работает, навыки и знания, которые он в итоге приобретёт, вполне могут соответствовать уровню подготовки Middle-специалиста. Но нужно понимать, что без опыта работы по профилю или хотя бы в смежных направлениях IT в первое время реальнее устроиться на позиции Junior. Но хорошая стартовая подготовка ускорит продвижение по карьерной лестнице, так что путь к Middle-вакансиям после окончания нашего факультета в любом случае станет проще и короче.
Многие наши студенты, кстати, находят работу ещё до окончания учёбы. Я знаю случаи, когда учащиеся по направлению Data Science трудоустраивались на младшие позиции уже после первой четверти в GeekUniversity и дальше успешно совмещали учёбу с работой. То есть даже прохождение начальных курсов в принципе позволяет начать зарабатывать.
Что нужно знать для поступления
Чтобы легче усваивать программу факультета, желательно к моменту поступления уже иметь начальные знания Python и SQL. Правда, наиболее мотивированные студенты умудряются получить эти знания уже по ходу обучения — начинают «с нуля», очень интенсивно занимаются и в итоге органично вливаются в учебный процесс.
Как организована учёба
В процессе обучения студент постоянно погружен в среду, способствующую его профессиональному росту. Взаимодействие с преподавателями, наставниками и однокурсниками строится по тем же принципам, что и на других факультетах направления Data Science. У каждой группы есть свой чат, где студенты общаются, обмениваются вопросами и решениями. Там же присутствуют и преподаватели, и наставники, к которым студенты всегда могут обратиться за консультацией. Наставники отвечают на вопросы, связанные с материалами лекций и выполнением домашних заданий.
На факультете преподают действующие специалисты в области работы с данными – у них можно получить не только обратную связь по выполненным учебным проектам, но и дельный совет по трудоустройству, прохождению собеседований и дальнейшему развитию карьеры. Так у будущего специалиста формируется более полное представление об отрасли и появляются первые знакомства в профессиональной среде.
Хотите приобщиться к работе над самыми передовыми IT-проектами, связанными с искусственным интеллектом, машинным обучением и анализом больших данных? Записывайтесь на факультет Data Engineering, чтобы стать специалистом, востребованным в любом серьёзном Data Science проекте!
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.
Освоить востребованную профессию в Аналитике больших данных можно всего за полтора года на курсах GeekBrains.
Последние годы мы часто слышим про искусственный интеллект, машинное обучение и Big Data. «Это ж-ж-ж неспроста!». С развитием новых направлений в IT появляются новые профессии и специальности. В ответ на запрос рынка GeekUniversity открывает новый факультет Data Engineering, где студентов научат создавать системы предварительной обработки данных для проектов в области Data Science!
Чем конкретно занимается инженер данных, что он должен уметь, чтобы хорошо зарабатывать, и что важно знать в начале карьеры — рассказывает декан факультета Сергей Ширкин.
Кто такой Data Engineer
Инженер данных – незаменимый сотрудник для любой команды, занимающейся Data Science. От дата-инженера зависит, насколько удобно будет построен процесс работы с данными в проекте. Этот специалист отвечает за сбор, хранение и обработку данных, выстраивает их кратчайший путь к дата-сайентистам – чтобы коллеги не отвлекались от своих основных задач. Поэтому команды, где есть дата-инженеры, работают быстрее и эффективнее тех, где при подготовке данных не хватает разделения труда.
Какую проблему рынка решает новый факультет
Бизнесу очень нужны специалисты по обработке данных, а вузы либо не готовят их вообще, либо обучают сильно устаревшим технологиям. Когда в компании остро не хватает дата-инженеров, на эти позиции зачастую берут самоучек. Но даже при таком сценарии многие вакансии долго остаются незакрытыми и вопросы дата-инжиниринга приходится решать дата-сайентистам или смежным IT-специалистам. Таким образом, на рынке труда есть явный запрос, который стоит удовлетворить.
Отличия от других факультетов направления Data Science
Дата-инженеры проходят подготовку за один год, потому что им не нужно углубляться в математику и тонкости построения моделей машинного обучения. Для сравнения, студенты факультетов искусственного интеллекта и аналитики Big Data учатся полтора года.
Инженеры данных заняты несколько другими вещами, нежели классические дата-сайентисты — IT-инфраструктурой, базами данных (SQL и NoSQL), оптимизацией процессов ETL (Extract, Transform, Load – «извлечение, преобразование, загрузка»), автоматизацией сбора данных из интернета и построением систем обработки данных в реальном времени.
Сходство между факультетами Data Engineering и аналитики Big Data в том, что и те и другие проводят большую часть обучения со стеком Hadoop/Spark. Именно эти технологии активно применяются в больших компаниях, и специалистов по работе с ними по-прежнему не хватает.
Что будет уметь выпускник факультета Data Engineering и каким будет его портфолио
Будущим инженерам предстоит выполнять курсовые проекты по итогам каждой четверти. Темы проектов будут связаны с актуальными рабочими процессами современных компаний.
В первой четверти студент познакомится с IT-инфраструктурой и параллельно научится собирать данные. Для закрепления знаний он создаст парсер (обработчик) интернет-сайтов – систему пополнения баз данных актуальной информацией из различных источников.
Во второй четверти учащиеся построят собственные хранилища для аналитической системы. Курсовая работа будет посвящена построению полного конвейера данных (pipeline) для Business intelligence (BI) — созданию системы перевода сырой информации в удобную для человеческого восприятия форму.
Третья четверть будет полностью посвящена работе с «большими данными». Сначала студенты освоят инструменты экосистемы Hadoop, а затем изучат Spark и познакомятся с обработкой потоков данных методами Big Data.
В заключительной четверти будущие выпускники изучат обработку данных в реальном времени и углубятся в инфраструктуру для работы с данными, доводя свои знания до продвинутого уровня.
Где работать
Нас часто спрашивают, на какой уровень знаний и зарплат можно рассчитывать после выпуска из GeekUniversity — Junior или Middle. Если студент активно работает, навыки и знания, которые он в итоге приобретёт, вполне могут соответствовать уровню подготовки Middle-специалиста. Но нужно понимать, что без опыта работы по профилю или хотя бы в смежных направлениях IT в первое время реальнее устроиться на позиции Junior. Но хорошая стартовая подготовка ускорит продвижение по карьерной лестнице, так что путь к Middle-вакансиям после окончания нашего факультета в любом случае станет проще и короче.
Многие наши студенты, кстати, находят работу ещё до окончания учёбы. Я знаю случаи, когда учащиеся по направлению Data Science трудоустраивались на младшие позиции уже после первой четверти в GeekUniversity и дальше успешно совмещали учёбу с работой. То есть даже прохождение начальных курсов в принципе позволяет начать зарабатывать.
Что нужно знать для поступления
Чтобы легче усваивать программу факультета, желательно к моменту поступления уже иметь начальные знания Python и SQL. Правда, наиболее мотивированные студенты умудряются получить эти знания уже по ходу обучения — начинают «с нуля», очень интенсивно занимаются и в итоге органично вливаются в учебный процесс.
Как организована учёба
В процессе обучения студент постоянно погружен в среду, способствующую его профессиональному росту. Взаимодействие с преподавателями, наставниками и однокурсниками строится по тем же принципам, что и на других факультетах направления Data Science. У каждой группы есть свой чат, где студенты общаются, обмениваются вопросами и решениями. Там же присутствуют и преподаватели, и наставники, к которым студенты всегда могут обратиться за консультацией. Наставники отвечают на вопросы, связанные с материалами лекций и выполнением домашних заданий.
На факультете преподают действующие специалисты в области работы с данными – у них можно получить не только обратную связь по выполненным учебным проектам, но и дельный совет по трудоустройству, прохождению собеседований и дальнейшему развитию карьеры. Так у будущего специалиста формируется более полное представление об отрасли и появляются первые знакомства в профессиональной среде.
Хотите приобщиться к работе над самыми передовыми IT-проектами, связанными с искусственным интеллектом, машинным обучением и анализом больших данных? Записывайтесь на факультет Data Engineering, чтобы стать специалистом, востребованным в любом серьёзном Data Science проекте!
Освоить востребованную профессию в Data Science можно всего за полтора года на курсах GeekBrains. После учёбы вы сможете работать по специальностям Data Scientist, Data Analyst, Machine Learning, Engineer Computer Vision-специалист или NLP-специалист.
Освоить востребованную профессию в Аналитике больших данных можно всего за полтора года на курсах GeekBrains.