Data Engineer: профессия на границе разработки и Data Science
Люди, которых нужно первыми нанимать в отдел аналитики
Привет! Меня зовут Даша Ульянова, я Product Manager в karpov.courses.
Сегодня расскажу про инженеров данных, или Data Engineer. Это специалисты, которые делают первый шаг в работе с данными, чтобы аналитики и специалисты Data Science могли быстро и удобно использовать полезную для бизнеса информацию и строить прогнозные модели.
Что будет сегодня в статье:
- Что за данные, с которыми надо работать
- Как собираются и обрабатываются данные: ETL
- Куда сохраняются данные: хранилище данных Data Warehouse
- Как используют данные потом: BI-система
- Что делают Data Scientist и какие данные им нужны для работы
- Как собирают большие данные
- Технологии, с которыми работают инженеры данных
- Что в итоге делает инженер данных и как это выглядит в реальной жизни
- Что нужно знать для обучения в Data Engineering
Что за данные, с которыми надо работать
Компании, в которых работают инженеры данных, собирают информацию из разных источников, например:
- сайт, на котором клиенты читают последние новости и делают заказы;
- метрики, которые подключены к сайту и фиксируют поведение пользователей;
- CRM-система для общения с клиентами.
В каждой из этих систем появляется разная информация, которую потом можно проанализировать и использовать — этим занимаются аналитики данных и Data Scientist.
Но пока что с данными сложно работать, потому что они никак не обработаны. Аналитиками и DS-специалистам нужно идти в метрики и CRM и смотреть, что творится там.
Задача инженера данных — достать информацию оттуда, где она копится, и сделать так, чтобы работать с ней было удобно и быстро.
Вот как это происходит.
Как собираются и обрабатываются данные: ETL
Для сбора данных Data Engineer должен написать программу для сбора сырых данных из разных источников. Нельзя просто переносить данные вручную в одно место: это сложно, долго и просто невозможно, если компания планирует развиваться.
Сырые данные проходят длинный путь до того, как на них посмотрят аналитики.
Проблема в их разнородности: данные из разных источников, поэтому среди них и отчёты по продажам, и метрики посещения разных страниц, и статистика рождаемости, и вообще всё, что может собрать компания.
Процесс сбора и обработки такой информации называется ETL и состоит из трёх этапов:
- E — Extract — извлечение.
- T — Transform — обработка.
- L — Load – загрузка в хранилище данных.
Инженер данных настраивает процесс извлечения, обработки и загрузки данных.
Это должна быть автоматизированная работа, которая выполняется без участия человека. Инженер только присматривает за ETL, улучшает процесс и чинит поломки.
Куда сохраняются данные: хранилище данных Data Warehouse
Когда данные собраны и обработаны, их нужно положить куда-то в одно место.
Можно использовать базы данных, которые сохраняют данные клиентов или список товаров на складе. Базы данных подходят для бизнес-работы, но для задач аналитики не годятся, потому что плохо справляются с информацией разных форматов.
Поэтому в DS используют хранилища данных, или Data Warehouse. Они оптимизированы для работы с информацией разного вида: данные делятся по разным типам, сохраняются в отдельные таблицы, между таблицами налаживаются сложные связи — теперь их можно использовать.
Инженер данных работает с хранилищами данных.
Как используют данные потом: BI-система
Чтобы аналитики и Data Scientist могли использовать всё, что инженер данных собрал, обработал и выгрузил, к хранилищу данных нужно подключить инструменты BI: дашборды, таблицы, графики.
Это выглядит так:
Что делают Data Scientist и какие данные им нужны для работы
Data Scientist работают с хранилищами данных, но не только. Ещё DS создают модели для прогнозирования, которые отвечают на вопросы: сколько компания заработает в третьем квартале? Стоит ли сейчас выпускать новый продукт в этом регионе?
Обычный процесс ETL охватывает только те данные, которые выбрали заранее, поэтому в хранилище данных попадает только определённая информация. Но мы не знаем, что понадобится DS для создания модели, поэтому нам нужна вся возможная информация.
Вот что получается: специально для DS-специалистов инженер данных создаёт отдельные схемы обработки данных. Это уже не ETL, а ELT: сначала идёт извлечение всех данных и загрузка (Extract + Load), а уже потом обработка (Transform).
Эти данные не попадают в общее хранилище данных, чтобы не устроить там беспорядок. Вместо этого данные попадают в озеро данных, или Data Lake. Озеро данных позволяет хранить данные в любом виде — как сыром, так и обработанном.
Инженер данных налаживает процесс доставки сырых данных в озеро данных Data Lake.
И только после загрузки в озеро специалисты DS определяют, как именно их обрабатывать, чтобы построить подходящие прогнозные модели.
Как собирают большие данные
В Data Lake хранятся большие данные, или Big Data. Этот термин часто используется, и не всегда правильно. У Big Data есть чёткое определение. Это правило четырёх V:
- Volume — объём. Данных действительно очень много.
- Variety — разнородность. Информация разная, чтобы Data Scientist мог использовать всё что есть.
- Veracity — достоверность. Данные должны быть правдивыми.
- Velocity — скорость. Большие данные должны обрабатываться быстро.
Для обработки Big Data в больших компаниях нужно много инженеров данных — представьте, сколько записей каждую секунду собирают Netflix, Youtube, Яндекс или Сбербанк. Поэтому без работы эти ребята не останутся.
Технологии, с которыми работают инженеры данных
Технических инструментов много, но мы рассмотрим самые известные.
Самый популярный язык программирования для автоматизаций — Python. Используют его и в Data Engineering.
На работе с данными остановимся подробнее.
Когда данные собираются по строгим правилам Извлечение-Обработка-Загрузка (ETL), это происходит по расписанию: раз в месяц, неделю, день. Это синхронное взаимодействие: вся информация ждёт свой очереди для отправления в хранилище данных.
Но иногда данные нужно собирать в реальном, потоковом времени — то есть как только они появляются. Сбор данных в потоковом режиме — это асинхронное взаимодействие. Информация не ждёт оговоренного времени, а сохраняется сразу после своего появления.
Для такого быстрого сбора данных используется технология брокера сообщений Kafka.
Когда данных очень много, они хранятся на нескольких серверах — не только потому, что не умещаются на одном, но и для безопасности. Если один сервер сломается, на остальных сохранится копия.
Каждый сервер называется узлом, а все серверы одной компании — кластером. Для работы с распределёнными по разным узлам данными тоже нужна специальная технология — набор инструментов Hadoop.
Если в Data Science больше математики и статистики, то в Data Engineering больше разработки. При этом инженер данных использует узконаправленные технологии, которые редко нужны обычному backend-разработчику.
Что в итоге делает инженер данных и как это выглядит в реальной жизни
Data Engineer формирует архитектуру работы с данными:
- настраивает автоматический сбор данных из всех подсистем компании: CRM, сайт, метрики;
- обрабатывает сырые данные по алгоритмам ETL, ELT или каким-то особым методом для спецзадач;
- иногда сохраняет всю информацию в базы данных, но чаще в озёра и хранилища;
- всё это происходит на распределённых облачных серверах.
На нашей программе есть проект из реальной жизни Data Engineer. В нём нужно будет построить сводный отчёт по продажам за определённый период времени из разных источников. Для этого нужно:
- очистить данные;
- прописать условия и метрики;
- подготовить базы данных и архитектуру их хранения;
- поработать со словарём данных и обработать запросы;
- разработать плагины, написать приложение и вычислять отчёт на каждый месяц;
- построить сводные таблицы, запустить виртуальную машину, настроить процесс в облаке;
- разработать дашборд с вакансиями аналитиков и банковский кредитный скоринг и оценку.
Что нужно знать для обучения в Data Engineering
Инженер данных — это смесь аналитика и технолога, он умеет разбираться в сложных системах, работает с кодом, базами и другими хранилищами данных.
Если вы решили начать учиться на Data Engineer, то вот что стоит знать для начала:
- синтаксис Python: понимать структуру данных и знать принципы объектно-ориентированного программирования;
- базовый синтаксис SQL: уметь составлять подзапросы и работать с оконными функциями;
- работать с командной строкой, знать основные команды Linux.
Профессия подойдёт:
- аналитикам данных, которые постоянно взаимодействуют с базами данных, но хотят лучше разобраться в ETL-процессах и выйти на качественно новый уровень в аналитике;
- BI-разработчикам, которые развивают системы бизнес-аналитики и хотят освоить архитектуру современных хранилищ данных и научиться их проектировать;
- Backend-разработчикам, которые хотят применить свой опыт для решения задач, связанных с хранением и обработкой больших данных.
Мы уже рассказывали подробно о том, как учатся в школе karpov.courses. Если вам интересно, почитайте статьи о том, как у нас устроено:
«Инженер данных» — наш курс по Data Engineer. Он охватывает ядро работы и ключевые инструменты и навыки, которыми должен владеть любой инженер данных. Ещё посмотрим на ответвления работы и научимся работать со смежными дисциплинами.
Программу курса Start DE можно подробнее посмотреть на странице курса:
Комментарий удалён модератором
По факту это кабанчики которые заменяют отдел, от кубера с хадупом до БД с дагами на питоне в airflow. Платить за весь отдел одному кабанчику естессна не будут
Можно попробовать сразу всё) Но постепенно
Инженииииир
Красивое слово, правда?
Но я не хочу отдавать свои данные...
Не отдавайте! Будьте тем кто их собирает