Data Engineer: профессия на границе разработки и Data Science

Люди, которых нужно первыми нанимать в отдел аналитики

Data Engineer: профессия на границе разработки и Data Science

Привет! Меня зовут Даша Ульянова, я Product Manager в karpov.courses.

Сегодня расскажу про инженеров данных, или Data Engineer. Это специалисты, которые делают первый шаг в работе с данными, чтобы аналитики и специалисты Data Science могли быстро и удобно использовать полезную для бизнеса информацию и строить прогнозные модели.

Даша Ульянова
Product Manager в karpov.courses

Что будет сегодня в статье:

Что за данные, с которыми надо работать

Компании, в которых работают инженеры данных, собирают информацию из разных источников, например:

  • сайт, на котором клиенты читают последние новости и делают заказы;
  • метрики, которые подключены к сайту и фиксируют поведение пользователей;
  • CRM-система для общения с клиентами.

В каждой из этих систем появляется разная информация, которую потом можно проанализировать и использовать — этим занимаются аналитики данных и Data Scientist.

Но пока что с данными сложно работать, потому что они никак не обработаны. Аналитиками и DS-специалистам нужно идти в метрики и CRM и смотреть, что творится там.

Задача инженера данных — достать информацию оттуда, где она копится, и сделать так, чтобы работать с ней было удобно и быстро.

Вот как это происходит.

Как собираются и обрабатываются данные: ETL

Для сбора данных Data Engineer должен написать программу для сбора сырых данных из разных источников. Нельзя просто переносить данные вручную в одно место: это сложно, долго и просто невозможно, если компания планирует развиваться.

Сырые данные проходят длинный путь до того, как на них посмотрят аналитики.

Data Engineer: профессия на границе разработки и Data Science

Проблема в их разнородности: данные из разных источников, поэтому среди них и отчёты по продажам, и метрики посещения разных страниц, и статистика рождаемости, и вообще всё, что может собрать компания.

Процесс сбора и обработки такой информации называется ETL и состоит из трёх этапов:

  • E — Extract — извлечение.
  • T — Transform — обработка.
  • L — Load – загрузка в хранилище данных.
Инженер данных настраивает процесс извлечения, обработки и загрузки данных.

Это должна быть автоматизированная работа, которая выполняется без участия человека. Инженер только присматривает за ETL, улучшает процесс и чинит поломки.

Куда сохраняются данные: хранилище данных Data Warehouse

Когда данные собраны и обработаны, их нужно положить куда-то в одно место.

Data Engineer: профессия на границе разработки и Data Science

Можно использовать базы данных, которые сохраняют данные клиентов или список товаров на складе. Базы данных подходят для бизнес-работы, но для задач аналитики не годятся, потому что плохо справляются с информацией разных форматов.

Поэтому в DS используют хранилища данных, или Data Warehouse. Они оптимизированы для работы с информацией разного вида: данные делятся по разным типам, сохраняются в отдельные таблицы, между таблицами налаживаются сложные связи — теперь их можно использовать.

Data Engineer: профессия на границе разработки и Data Science
Инженер данных работает с хранилищами данных.

Как используют данные потом: BI-система

Чтобы аналитики и Data Scientist могли использовать всё, что инженер данных собрал, обработал и выгрузил, к хранилищу данных нужно подключить инструменты BI: дашборды, таблицы, графики.

Это выглядит так:

Data Engineer: профессия на границе разработки и Data Science

Что делают Data Scientist и какие данные им нужны для работы

Data Scientist работают с хранилищами данных, но не только. Ещё DS создают модели для прогнозирования, которые отвечают на вопросы: сколько компания заработает в третьем квартале? Стоит ли сейчас выпускать новый продукт в этом регионе?

Обычный процесс ETL охватывает только те данные, которые выбрали заранее, поэтому в хранилище данных попадает только определённая информация. Но мы не знаем, что понадобится DS для создания модели, поэтому нам нужна вся возможная информация.

Data Engineer: профессия на границе разработки и Data Science

Вот что получается: специально для DS-специалистов инженер данных создаёт отдельные схемы обработки данных. Это уже не ETL, а ELT: сначала идёт извлечение всех данных и загрузка (Extract + Load), а уже потом обработка (Transform).

Эти данные не попадают в общее хранилище данных, чтобы не устроить там беспорядок. Вместо этого данные попадают в озеро данных, или Data Lake. Озеро данных позволяет хранить данные в любом виде — как сыром, так и обработанном.

Инженер данных налаживает процесс доставки сырых данных в озеро данных Data Lake.

И только после загрузки в озеро специалисты DS определяют, как именно их обрабатывать, чтобы построить подходящие прогнозные модели.

Data Engineer: профессия на границе разработки и Data Science

Как собирают большие данные

В Data Lake хранятся большие данные, или Big Data. Этот термин часто используется, и не всегда правильно. У Big Data есть чёткое определение. Это правило четырёх V:

  • Volume — объём. Данных действительно очень много.
  • Variety — разнородность. Информация разная, чтобы Data Scientist мог использовать всё что есть.
  • Veracity — достоверность. Данные должны быть правдивыми.
  • Velocity — скорость. Большие данные должны обрабатываться быстро.

Для обработки Big Data в больших компаниях нужно много инженеров данных — представьте, сколько записей каждую секунду собирают Netflix, Youtube, Яндекс или Сбербанк. Поэтому без работы эти ребята не останутся.

Технологии, с которыми работают инженеры данных

Технических инструментов много, но мы рассмотрим самые известные.

Самый популярный язык программирования для автоматизаций — Python. Используют его и в Data Engineering.

На работе с данными остановимся подробнее.

Когда данные собираются по строгим правилам Извлечение-Обработка-Загрузка (ETL), это происходит по расписанию: раз в месяц, неделю, день. Это синхронное взаимодействие: вся информация ждёт свой очереди для отправления в хранилище данных.

Но иногда данные нужно собирать в реальном, потоковом времени — то есть как только они появляются. Сбор данных в потоковом режиме — это асинхронное взаимодействие. Информация не ждёт оговоренного времени, а сохраняется сразу после своего появления.

Для такого быстрого сбора данных используется технология брокера сообщений Kafka.

Data Engineer: профессия на границе разработки и Data Science

Когда данных очень много, они хранятся на нескольких серверах — не только потому, что не умещаются на одном, но и для безопасности. Если один сервер сломается, на остальных сохранится копия.

Каждый сервер называется узлом, а все серверы одной компании — кластером. Для работы с распределёнными по разным узлам данными тоже нужна специальная технология — набор инструментов Hadoop.

Если в Data Science больше математики и статистики, то в Data Engineering больше разработки. При этом инженер данных использует узконаправленные технологии, которые редко нужны обычному backend-разработчику.

Что в итоге делает инженер данных и как это выглядит в реальной жизни

Data Engineer формирует архитектуру работы с данными:

  • настраивает автоматический сбор данных из всех подсистем компании: CRM, сайт, метрики;
  • обрабатывает сырые данные по алгоритмам ETL, ELT или каким-то особым методом для спецзадач;
  • иногда сохраняет всю информацию в базы данных, но чаще в озёра и хранилища;
  • всё это происходит на распределённых облачных серверах.
Data Engineer: профессия на границе разработки и Data Science

На нашей программе есть проект из реальной жизни Data Engineer. В нём нужно будет построить сводный отчёт по продажам за определённый период времени из разных источников. Для этого нужно:

  • очистить данные;
  • прописать условия и метрики;
  • подготовить базы данных и архитектуру их хранения;
  • поработать со словарём данных и обработать запросы;
  • разработать плагины, написать приложение и вычислять отчёт на каждый месяц;
  • построить сводные таблицы, запустить виртуальную машину, настроить процесс в облаке;
  • разработать дашборд с вакансиями аналитиков и банковский кредитный скоринг и оценку.

Что нужно знать для обучения в Data Engineering

Инженер данных — это смесь аналитика и технолога, он умеет разбираться в сложных системах, работает с кодом, базами и другими хранилищами данных.

Если вы решили начать учиться на Data Engineer, то вот что стоит знать для начала:

  • синтаксис Python: понимать структуру данных и знать принципы объектно-ориентированного программирования;
  • базовый синтаксис SQL: уметь составлять подзапросы и работать с оконными функциями;
  • работать с командной строкой, знать основные команды Linux.

Профессия подойдёт:

  • аналитикам данных, которые постоянно взаимодействуют с базами данных, но хотят лучше разобраться в ETL-процессах и выйти на качественно новый уровень в аналитике;
  • BI-разработчикам, которые развивают системы бизнес-аналитики и хотят освоить архитектуру современных хранилищ данных и научиться их проектировать;
  • Backend-разработчикам, которые хотят применить свой опыт для решения задач, связанных с хранением и обработкой больших данных.

Мы уже рассказывали подробно о том, как учатся в школе karpov.courses. Если вам интересно, почитайте статьи о том, как у нас устроено:

«Инженер данных» — наш курс по Data Engineer. Он охватывает ядро работы и ключевые инструменты и навыки, которыми должен владеть любой инженер данных. Ещё посмотрим на ответвления работы и научимся работать со смежными дисциплинами.

Программу курса Start DE можно подробнее посмотреть на странице курса:

39
36 комментариев

Профессия из разряда «и в IT влезть, и ML не стать»

2
Ответить

По факту это кабанчики которые заменяют отдел, от кубера с хадупом до БД с дагами на питоне в airflow. Платить за весь отдел одному кабанчику естессна не будут

Ответить

Можно попробовать сразу всё) Но постепенно

Ответить

Инженииииир

2
Ответить

Красивое слово, правда?

Ответить

Но я не хочу отдавать свои данные...

2
Ответить

Не отдавайте! Будьте тем кто их собирает

Ответить