дата инжиниринг что это
Кто такой инженер данных (дата инженер), что делает, где учиться и как им стать
В России и постсоветских странах профессия data инженер стала востребованной не так давно. Но как только она появилась, предложений с данной вакансией стало много. И так как профессия Data Engineer довольно трудоемкая и требует длительного обучения, заработная плата в сфере соответствующая — высокая.
Об этом, а также о других аспектах, которые касаются работы инженером данных, рассказано в этой статье. Прежде чем начать, уточним, что дата инженер, инженер данных, data инженер, data engineer — названия одной профессии. Теперь никакой путаницы не возникнет!
Что такое Data Engineering
Дата-инжиниринг — это специализация, которая основана на работе с данными. Под работой подразумевается хранение, доставка и обработка данных. Автоматизация процессов, связанных с данными, и их надежная инфраструктура — основные обязанности любого data инженера.
Несмотря на то, что работа с различными данными применяется во многих сферах, наибольшее применение она получила в разработке искусственного интеллекта (ИИ), машинном обучении, нейросетях и Big Data (большой пласт данных).
Кто такой Data инженер и чем занимается
Теперь можно переходить к тому, кто такой дата инженер. В любом проекте есть данные, и неважно что это: перечень клиентов в базе или алгоритмы машинного обучения. Всё это требуется хранить, обрабатывать и перемещать. Этим и занимается данный специалист, разрабатывая различные решения, используя прикладные программы, решения и среды обработки.
Так как сейчас количество данных значительно увеличилось по сравнению с предыдущим десятилетием, это напрямую сказалось на профессии. Помимо создания существенных SQL запросов и перемещения информации с помощью различных инструментов (Informatica ETL, Pentaho ETL, Talend), в список того, что должен уметь инженер данных, входит написание программного кода на Python, Java и знание облачных платформ.
Важно! SQL расшифровывается как язык структурированных запросов. Несмотря на свой большой “возраст”, он до сих пор является ключевым языком по работе с данными и используется во множестве современных хранилищ.
Компания, у которой в штате есть инженер по работе с данными, в целом функционирует быстрее и эффективнее, вне зависимости от сферы деятельности. Но важно учитывать, что инженеры часто работают в паре с сайентистами.
Различия между дата сайентистом
Зачастую профессию Data Engineer путают со смежной работой data scientist-ом. Но это не одно и то же.
Дело в том, что из-за различных требований в каждой компании и различий в представлении о профессиях, многие нанимают на должность сайентистом с требованиями как у инженера. Из-за подобного грань между сферами работы стирается, тем более что и инженер, и сайентист, в основном действуют в команде.
Если избежать технических аспектов, то главное различие заключается в том, что engineer работает с данными, собирая их, перемещая и обрабатывая, а scientist работает с уже собранными и перемещенными данными, анализируя их, изменяя и разрабатывая новые. То есть инженер работает над инфраструктурой данных, а сайентист именно с самими данными. Почти всегда данные, попавшие к сайентисту, уже обработаны инженером.
Цель обоих специалистов в том, чтобы упростить работу над данными и делать их максимально качественными. А вот второстепенные цели разные. Инженер создает схему (пайплайн) обработки и обслуживания данных, которую разрабатывает сайентист. А сайентист в свою очередь проверяет данные на различные гипотезы, улучшает и модифицирует их.
Инженеры данных более востребованы, чем сайентисты, а также в среднем зарабатывают больше денег. Это связано с тем, что область работы данного специалиста шире и может найти применение почти в любой сфере.
Достоинства и недостатки профессии
Эта редкая профессия подойдет далеко не всем. Люди бывают разные, поэтому и работа мечты у каждого своя. Один из наиболее эффективных способов понять, кто такой дата инженер и подходит ли данная сфера конкретному человеку, это ознакомиться с основными плюсами и минусами.
Список преимуществ:
Основные недостатки:
Не стоит обращать внимания на количество плюсов и минусов. Лучше вчитаться в каждый пункт и для себя выяснить, насколько подходит работа с данными.
Сколько зарабатывает Дата инженер
То, сколько получают дата инженеры, является одним из главных преимуществ профессии. В 2020 году такие специалисты в среднем зарабатывают от 80 до 350 тысяч рублей в России. Как видно, даже минимальная заработная плата довольно высокая, не говоря уже о средней и максимальной зарплате.
Такой широкий разброс объясняется опытом специалиста, различными обязанностями и местом работы. Очевидно, что работая в Google с огромными массивами данных, инженер будет получать намного больше, нежели в небольшой компании.
Заработная плата за границей выше. Если взять в пример США, то data engineer зарабатывает примерно 45 долларов в час. Сравнивая с зарплатой в России, в Америке можно зарабатывать в полтора-два раза больше. Конечно же, это относится к специалистам с опытом и знанием всех нужных инструментов и языков.
Работа и карьера
Чтобы получать высокую заработную плату, нужно устроиться в хорошую компанию (лучше международную), имея большой опыт.
Так как это специальность в сфере IT, то такие обычно поглощают с головой. Это значит, что если человек серьезно относится к профессии, скорее всего, он останется в ней на всю жизнь.
Востребованность инженера данных
Как уже упоминалось ранее, эта специализация очень востребована как в России, так и во всем мире. Прямо сейчас можно найти множество вакансий на сайтах по поиску работы. Причем нужны не только опытные сотрудники, но и новички. Кратко говоря, достаточно знать алгоритмы и структуры данных, а также SQL с Python, и устроиться на минимальную зарплату в 80-120 тысяч рублей вполне реально. К тому же обучаться новым навыкам параллельно работая значительно эффективнее, чем только учиться.
Требования и обязанности
Чтобы процесс поиска работы data инженеру был проще, стоит ознакомиться с наиболее встречающимися требованиями и обязанностями, которые выдвигают работодатели.
Список основных требований и обязанностей:
Последние несколько требований встречаются лишь в вакансиях больших компаний, например, Mail.ru.
Дополнительно рекомендуем посмотреть график самых востребованных навыков:
Где искать работу
Советы по устройству на работу:
Как стать дата инженером: пошагово
Можно стать data engineer-ом тремя способами: отучившись в ВУЗе, самостоятельно или на специализированных курсах. Важно понимать, что это длительный и нелегкий процесс, который требует высокой концентрации и отдачи, и скорее всего, придется совмещать несколько способов обучения.
Инструкция как стать инженером данных:
Так как это IT-профессия, к новичкам здесь относятся очень дружелюбно. Если что-то непонятно или есть трудности в изучении материала, всегда можно обратиться к более опытным специалистам.
Где учиться на инженера данных
Обучение на data инженера — трудоемкий и длительный процесс. Эффективность обучения зависит не только от человека, но и от выбранного способа. Получить нужные знания можно в ВУЗе, на курсах и самому.
К сожалению, в России нет ВУЗов со специализацией инженера данных. Можно изучить лишь часть знаний, которые нужны в профессии. Это языки программирования SQL, Java, Scala и Python. Им обучают на следующих специальностях: программирование, прикладная информатика; программная инженерия, вычислительная техника и программное обеспечение, информационная безопасность, математическое обеспечение и администрирование информационных систем.
Но есть несколько факультетов, в которых работе с данными уделяют особое внимание:
После обучения в ВУЗе, доучиться на курсах или самостоятельно будет значительно проще.
Онлайн образование
Онлайн-школы и академии — самый простой и эффективный способ обучения. В них преподавателями выступают опытные специалисты, которые всегда готовы помочь советом.
Среди множества курсов можно выделить 3:
1. Инженер данных на GeekBrains
Здесь это целый факультет в онлайн-университете от Mail.ru. Программа обучения одна из самых содержательных и объемных в русскоязычном сегменте. В неделю проходит 2-3 лекции. Состоит из 140 часов обучения и 280 часов практики (программа может меняться, уточняйте по ссылке ниже).
Ссылка на обучение и подробная информация о курсе: https://gb.ru/geek_university/data-engineer
2. Программа обучения от Нетологии
Длится целый год, с возможностью первого платежа через полгода после начала курса. В конце программы выдается диплом о профессиональной переподготовке.
Ссылка на обучение и информация о курсе: https://netology.ru/programs/data-engineer
3. Курс Data Engineer на SkillFactory
Продолжительность — 10 недель. Полное обучение с нуля до дипломного проекта. Есть возможность общения с другими учениками и преподавателями.
Ссылка на обучение и информация о курсе: https://skillfactory.ru/data-engineer
Каждый из вышеперечисленных курсов отличается от другого программой обучения. Рекомендуется ознакомиться с каждым вариантом и выбрать наиболее подходящий.
Udemy
Если обучение в онлайн-школах для Вас слишком длительное и дорогое, то Вы можете приобрести недорогие курсы на платформе Udemy. Здесь есть множество различных курсов по теме в основном на английском языке, но на русском тоже встречаются (пользуйтесь фильтром).
Эффективность такого обучения не сравнима с полноценным курсом в онлайн-школе, но это хорошая альтернатива. На платформе Вы покупаете уже готовые материалы, которые изучаете самостоятельно. Основные преимущества — это цена и возможность прочитать отзывы пользователей о каждом курсе.
Ссылка на платформу Udemy с различными курсами по работе с данными: https://www.udemy.com/courses/search/?src=ukw&q=data+engineer
Самообразование
Есть возможность научиться профессии самому. Это самый сложный вариант, так как профессия инженера данных сложная и подразделяется на несколько специализаций. Из-за этого в сети не так много полноценных программ обучения и придется учиться отрывками, сначала изучая структуру данных, а затем языки программирования отдельно и т.д.
Ресурсы для самообучения:
Как видно, в отличие от многих других IT-профессий, даже самообразование на инженера данных основано на курсах. Большинство из них на английском языке.
Полезные ссылки
Несколько полезных ресурсов:
Профессия инженера данных, пусть и сложная, но явно стоит того, чтобы ей обучиться. Если вы понимаете, что в силах это сделать, и такая работа порождает интерес, то вам нужно изучать это дело!
Расскажите в комментариях, что думаете о данной профессии. Вызвала ли она интерес? Кажется ли сложной для изучения? И конечно же, удачи в начинаниях!
Видео по теме
Уважаемый посетитель, если Вы не согласны с какой-либо информацией в статье, или нашли ошибку (неточность), то перейдите пожалуйста на страницу контроля качества информации и свяжитесь с нами.
Дата-инженеры в бизнесе: кто они и чем занимаются?
Данные — один из активов организации. Поэтому вполне вероятно, что перед вашей командой в какой-то момент могут возникнуть задачи, которые можно будет решить, используя эти данные разными способами, начиная с простых исследований и вплоть до применения алгоритмов машинного обучения.
И хоть построение крутой модели — неотъемлемо важная часть, но все же это не залог успеха в решении подобных задач. Качество модели в большой степени зависит от качества данных, которые собираются для нее. И если 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 Engineering и не дать ей затянуть вас в пучину.
Складывается впечатление, что в наши дни каждый хочет стать дата-саентистом (Data Scientist). Но как насчет Data Engineering (инжиниринга данных)? По сути, это своего рода гибрид дата-аналитика и дата-саентиста; дата-инженер обычно отвечает за управление рабочими процессами, конвейерами обработки и ETL-процессами. Ввиду важности этих функций, в настоящее время это очередной популярный профессиональный жаргонизм, который активно набирает обороты.
Высокая зарплата и огромный спрос — это лишь малая часть того, что делает эту работу чрезвычайно привлекательной! Если вы хотите пополнить ряды героев, никогда не поздно начать учиться. В этом посте я собрал всю необходимую информацию, чтобы помочь вам сделать первые шаги.
Итак, начнем!
Что такое Data Engineering?
Честно говоря, нет лучшего объяснения, чем это:
«Ученый может открыть новую звезду, но не может ее создать. Ему придется просить инженера сделать это за него.»
–Гордон Линдсей Глегг
Таким образом, роль дата-инженера достаточно весома.
Из названия следует, что инженерия данных связана с данными, а именно с их доставкой, хранением и обработкой. Соответственно, основная задача инженеров — обеспечить надежную инфраструктуру для данных. Если мы посмотрим на ИИ-иерархию потребностей, инженерия данных занимает первые 2–3 этапа: сбор, перемещение и хранение, подготовка данных.
Чем занимается инженер данных?
С появлением больших данных сфера ответственности резко изменилась. Если раньше эти эксперты писали большие SQL-запросы и перегоняли данные с помощью таких инструментов, как Informatica ETL, Pentaho ETL, Talend, то теперь требования к дата-инженерам повысились.
Большинство компаний с открытыми вакансиями на должность дата-инженера предъявляют следующие требования:
Список используемых в этом случае инструментов может отличаться, все зависит от объема этих данных, скорости их поступления и неоднородности. Большинство компаний вообще не сталкиваются с большими данными, поэтому в качестве централизованного хранилища, так называемого хранилища данных, можно использовать базу данных SQL (PostgreSQL, MySQL и т. д.) с небольшим набором скриптов, которые направляют данные в хранилище.
IT-гиганты, такие как Google, Amazon, Facebook или Dropbox, предъявляют более высокие требования: знание Python, Java или Scala.
Дата-инженеры Vs. дата-саентисты
Ладно, это было простое и забавное сравнение (ничего личного), но на самом деле все намного сложнее.
Во-первых, вы должны знать, что существует достаточно много неясности в разграничении ролей и навыков дата-саентиста и дата-инженера. То есть, вы легко можете быть озадачены тем, какие все-таки навыки необходимы для успешного дата-инженера. Конечно, есть определенные навыки, которые накладываются на обе роли. Но также есть целый ряд диаметрально противоположных навыков.
Наука о данных — это серьезное дело, но мы движется к миру с функциональной дата саенс, где практикующие способны делать свою собственную аналитику. Чтобы задействовать конвейеры данных и интегрированные структуры данных, вам нужны инженеры данных, а не ученые.
Является ли дата-инженер более востребованным, чем дата-саентист?
— Да, потому что прежде чем вы сможете приготовить морковный пирог, вам нужно сначала собрать, очистить и запастись морковью!
Дата-инженер разбирается в программировании лучше, чем любой дата-саентист, но когда дело доходит до статистики, все с точностью до наоборот.
Но вот преимущество дата-инженера: без него/нее ценность модели-прототипа, чаще всего состоящей из фрагмента кода ужасного качества в файле Python, полученной от дата-саентиста и каким-то образом дающей результат, стремится к нулю.
Без дата-инженера этот код никогда не станет проектом, и никакая бизнес-проблема не будет эффективно решена. Инженер данных пытается превратить это все в продукт.
Основные сведения, которые должен знать дата-инженер
Итак, если эта работа пробуждает в вас свет и вы полны энтузиазма — вы способны научиться этому, вы можете овладеть всеми необходимыми навыками и стать настоящей рок-звездой в области разработки данных. И, да, вы можете осуществить это даже без навыков программирования или других технических знаний. Это сложно, но возможно!
Каковы первые шаги?
Вы должны иметь общее представление о том, что есть что.
Прежде всего, Data Engineering относится к информатике. Конкретне — вы должны понимать эффективные алгоритмы и структуры данных. Во-вторых, поскольку дата-инженеры работают с данными, необходимо понимание принципов работы баз данных и структур, лежащих в их основе.
Например, обычные B-tree SQL базы данных основаны на структуре данных B-Tree, а также, в современных распределенных репозиториях, LSM-Tree и других модификациях хеш-таблиц.
* Эти шаги основаны на замечательной статье Адиля Хаштамова. Итак, если вы знаете русский язык, поддержите этого автора и прочитайте его пост.
1. Алгоритмы и структуры данных
Использование правильной структуры данных может значительно улучшить производительность алгоритма. В идеале, мы все должны изучать структуры данных и алгоритмы в наших школах, но это редко когда-либо освещается. Во всяком случае, ознакомится никогда не поздно.
Итак, вот мои любимые бесплатные курсы для изучения структур данных и алгоритмов:
Вся наша жизнь — это данные. И для того, чтобы извлечь эти данные из базы данных, вам нужно «говорить» с ними на одном языке.
SQL (Structured Query Language — язык структурированных запросов) является языком общения в области данных. Независимо от того, что кто-то говорит, SQL жил, жив и будет жить еще очень долго.
Если вы долгое время находились в разработке, вы, вероятно, заметили, что слухи о скорой смерти SQL появляются периодически. Язык был разработан в начале 70-х годов и до сих пор пользуется огромной популярностью среди аналитиков, разработчиков и просто энтузиастов.
Без знания SQL в инженерии данных делать нечего, так как вам неизбежно придется создавать запросы для извлечения данных. Все современные хранилища больших данных поддерживают SQL:
Для анализа большого слоя данных, хранящихся в распределенных системах, таких как HDFS, были изобретены механизмы SQL: Apache Hive, Impala и т. д. Видите, он не собирается никуда уходить.
Как выучить SQL? Просто делай это на практике.
Для этого я бы порекомендовал ознакомиться с отличным учебником, который, кстати, бесплатный, от Mode Analytics.
3. Программирование на Python и Java/Scala
Почему стоит изучать язык программирования Python, я уже писал в статье Python vs R. Выбор лучшего инструмента для AI, ML и Data Science. Что касается Java и Scala, большинство инструментов для хранения и обработки огромных объемов данных написаны на этих языках. Например:
Чтобы погрузиться в язык Scala, вы можете прочитать Программирование в Scala от автора языка. Также компания Twitter опубликовала хорошее вводное руководство — Scala School.
Что касается Python, я считаю Fluent Python лучшей книгой среднего уровня.
4. Инструменты для работы с большими данными
Вот список самых популярных инструментов в мире больших данных:
Знание хотя бы одной облачной платформы находится в списке базовых требований, предъявляемым к соискателям на должность дата-инженера. Работодатели отдают предпочтение Amazon Web Services, на втором месте — облачная платформа Google, и замыкает тройку лидеров Microsoft Azure.
Вы должны хорошо ориентироваться в Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
6. Распределенные системы
Работа с большими данными подразумевает наличие кластеров независимо работающих компьютеров, связь между которыми осуществляется по сети. Чем больше кластер, тем больше вероятность отказа его узлов-членов. Чтобы стать крутым экспертом в области данных, вам необходимо вникнуть в проблемы и существующие решения для распределенных систем. Эта область старая и сложная.
Эндрю Таненбаум считается пионером в этой области. Для тех, кто не боится теории, я рекомендую его книгу «Распределенные системы», для начинающих она может показаться сложной, но это действительно поможет вам отточить свои навыки.
Я считаю «Проектирование приложений с интенсивным использованием данных» под авторством Мартина Клеппманна лучшей вводной книгой. Кстати, у Мартина есть замечательный блог. Его работа поможет систематизировать знания о построении современной инфраструктуры для хранения и обработки больших данных.
Для тех, кто любит смотреть видео, на Youtube есть курс Распределенные компьютерные системы.
7. Конвейеры данных
Конвейеры данных — это то, без чего вы не можете жить в качестве дата-инженера.
Большую часть времени дата-инженер строит так называемую пайплайн дату, то есть создает процесс доставки данных из одного места в другое. Это могут быть пользовательские сценарии, которые идут к API внешнего сервиса или делают SQL-запрос, дополняют данные и помещают их в централизованное хранилище (хранилище данных) или хранилище неструктурированных данных (озера данных).
Подводя итог: основной чеклист дата-инженера
Подытожим — необходимо хорошее понимание следующего:
И, наконец, последнее, но очень важное, что я хочу сказать.
Путь становления Data Engineering не так прост, как может показаться. Он не прощает, фрустрирует, и вы должны быть готовы к этому. Некоторые моменты в этом путешествии могут подтолкнуть вас все бросить. Но это настоящий труд и учебный процесс.
Просто не приукрашивайте его с самого начала. Весь смысл путешествия в том, чтобы узнать как можно больше и быть готовым к новым вызовам.
Вот отличная картинка, с которой я столкнулся, которая хорошо иллюстрирует этот момент:
И да, не забудьте избегать выгорания и отдыхать. Это тоже очень важно. Удачи!
Как вам статья, друзья? Приглашаем на бесплатный вебинар, который состоится уже сегодня в 20.00. В рамках вебинара обсудим, как построить эффективную и масштабируемую систему обработки данных для небольшой компании или стартапа с минимальными затратами. В качестве практики познакомимся с инструментами обработки данных Google Cloud. До встречи!