Профессия Data Engineer: хайп или реально надо?

Привет! Я Data Engineer в NIX , фанат обработки данных больших и маленьких, поклонник Python. В этой статье расскажу, как Data Engineer помогает превращать сухие цифры в инсайты и почему разработчикам стоит попробовать свои силы в этом направлении.

Только ленивый не говорит, что работа с Big Data — профессия будущего. А я даже больше скажу: это потребность «здесь и сейчас». До 2003 года мы создали столько петабайтов данных, сколько сегодня производим каждые два дня. Аналитики Gartner среди техно-трендов 2021 года назвали облачные сервисы и кибербезопасность.

Тенденция легко объясняется. Огромные массивы Big Data нужно хранить в безопасности и обрабатывать, получая полезную информацию. На удаленке эти потребности компаний стали более ощутимы. E-commerce, Healthcare, EdTech хотят знать все о своих онлайн-потребителях. Пока данные лежат на серверах, толку от них нет.

Есть данные? А если найду?

Чистить, структурировать, конвертировать — основные операции Data-инженерии. Специалист должен знать, как объединить данные разного формата, собранные из нескольких источников. Три года я программирую на Python, из них два года погружен в Big Data. На личном опыте понял: для ежедневной работы нужно уметь больше.

Data Engineer — это сборная солянка четырех профессий:

Software Engineer. Пишет код, тестирует и оптимизирует его. По моему мнению, Software Engineer — простейший путь в Data-инженерию. Специалист знает, как устроены компьютер/программы, базово знаком с разработкой качественного ПО и работой с базами данных.

Big Data Developer. Понимает принципы обработки данных, использует различные инструменты для их трансформации. Он готовит описание моделей данных в зависимости от задачи или бизнес-процессов клиента.

Database Administrator. На его плечах — построение архитектуры хранилищ. Знает, как оптимальнее хранить данные и проводить над ними базовые операции.

Cloud Engineer. Объемы данных сегодня настолько большие, что хранить их на серверах слишком дорого или невозможно — они там просто не помещаются. В помощь — облачные решения. Инженер разбирается, какие есть cloud-решения, какова их структура, специфика и взаимодействие между собой, как настроить облачные сервисы.

Из каждого направления можно перейти в Data Engineering.

Data Engineer, Data Scientist или Data Analyst — кто круче?

Эта тройка специалистов плотно работает с данными. У каждого — свои обязанности. Data Engineer получает запрос от коллег найти релевантные данные, чтобы, например, узнать эффективность новой фичи. Инженер извлекает определенные данные из разных источников (сервера, приложения или облака), упрощает, обрабатывает их и загружает в нужное хранилище. Оттуда их берет Data Analyst — анализирует информацию и переводит ее в понятный клиенту формат.

Например, в виде отчета, инфографики, презентации. Специалист видит связь между найденными показателями, сравнивает их. Когда нужно спрогнозировать результат от реализации фичи или какого-либо процесса, подключается Data Scientist. Давайте на примере рассмотрим сотрудничество всех ролей в проекте.

Представим условную соцсеть для изучения иностранных языков. Люди находят друзей по переписке и практикуют английский, немецкий, китайский. Миллионы ежедневных пользователей оставляют цифровые следы: авторизуются через личную почту, покупают премиум-аккаунты, скачивают приложение, созваниваются по видеосвязи. Каждый клик регистрируется и отправляется на сервер. Компания хочет отследить эффективность и прибыльность платформы. Как в этом поможет Data-инженер? Лично — никак. Но с коллегами Data Scientist и Data Analyst найденные им данные превращаются в полезную информацию — статистику, инфографику, прогнозы.

Нельзя сказать, что кто-то из них полезнее, выполняет больше работы или лучше справляется с обязанностями. Объем задач у них и правда может отличаться и зависит от поставленных клиентом задач. Единственное — Data-инженер будто работает в «тени». Если вы коммуникабельны и умеете общаться с заказчиками, стоит присмотреться к профессии аналитика или Data Scientist. Но решать, конечно, вам.

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

Как строится работа с данными

Есть определенные источники данных. Задача инженера — получить оттуда информацию, «подружить» данные из разных источников, обработать и по запросу упростить и разнообразить их. Отправляем в БД запрос, написанный на Structured Query Language. SQL — самый распространенный язык для манипуляций с данными. Поэтому многие инструменты используют уже всем знакомый синтаксис. Например, Apache Hive или Impala.

Чтобы изменить данные, нужны специальные фреймворки. Apache Spark, Apache Flink и Hadoop MapReduce позволяют выполнять такие виды трансформаций:

Одни фреймворки подходят только для обработки стриминговых данных, другие — исключительно для данных, которые давно хранятся на сервисе. Некоторые могут делать и то, и другое. Допустим, нам нужно удалить ненужные записи и заполнить пропущенные значения. Делается это заготовленными скриптами. Не для всех фреймворков есть возможность писать скрипты на том языке, на котором хочется инженеру.

Чаще всего для преобразования данных берут инструменты Python, Java и Scala. На Java созданы Hadoop, HDFS, Apache Cassandra, HBase и Apache Hive; на Scala — Apache Kafka и Apache Spark; на Python — Pandas/NumPy, Dask + обертки для фреймворков, написанных на других языках (PyFlink, PySpark, Python Hadoop API).

Чтобы все структурировать, есть два подхода — ETL и ELT. Если мы работаем с небольшим объемом или с базами готовых данных от разных клиентов, удобнее использовать ЕTL. Если много смешанной информации, подойдет ELT. В этом случае сначала загружаем данные в хранилище, трансформируем на отдельном сервере и по необходимости вытаскиваем.

Готовые данные попадают в data warehouse или data lakes. Доставку настраиваем через SQL-запрос или кастомный скрипт, включенный в API внешнего сервиса. Далее за дело берутся Data Analyst и Data Scientist. На основе данных они формируют полезную информацию. Первый — создает отчеты, графики и находит закономерности в данных, второй — с помощью подходов Machine Learning делает прогнозы.

Чем полезен Data Engineering

Без работы точно не останешься. Количество данных будет только расти. Понадобится их чистить, упорядочивать, анализировать. Знать основы Data Engineering полезно как минимум для следующих целей.

Находить и приводить данные в порядок. Информация о профилях пользователей, покупках, количестве кликов в приложении на разных девайсах — все это собирает инженер и группирует по содержанию. Если компания строит планы на следующий год и хочет узнать предполагаемый рост бизнеса, к инженеру подключается Data Scientist и Analyst. На основе собранной инженером информации они выясняют, в какой нише и почему падают продажи, какие продукты или фичи самые популярные.

Увеличивать скорость доставки данных в целевую систему или к целевому пользователю . Скорость зависит от выбора фреймворка, подхода и сервиса. Например, Hadoop MapReduce более кост-эффективен по сравнению со Spark, но и скорость обработки данных ниже. Если у нас стриминговые данные, их удобнее и быстрее обрабатывать на лету, вместо того чтобы сохранять на диск, а обработкой заниматься когда-нибудь потом.

Уменьшать стоимость хранения данных. В 80-х годах 1 ГБ пространства на HDD стоил $500 тыс., а сейчас — $0,025. С тех пор объемы данных выросли в сотни раз, и жесткие диски с ними не справляются. Удобнее и безопаснее хранить информацию на облаке. Терабайты на сервисе обойдутся от нескольких десятков до сотен долларов в месяц. Специалисты могут подобрать клиенту наиболее выгодный сервис и тарифный план.

Big Data — «топливо» XXI века

Если откинем все данные, развитие человечества будет примерно на уровне XVIII века. Мы все так же печем хлеб, пользуемся транспортом, лечим людей, как и наши предки. Использование Big Data позволяет продавать еще больше хлеба, оптимизировать поездки и ускорять научные и другие открытия.

Большим корпорациям с многолетней историей или молодым компаниям — разобраться с данными полезно всем. Для обычных пользователей это ничего не значит, но для бизнеса очень важно. Когда, условно говоря, упадут продажи, достаточно будет вытащить из хранилища нужную информацию и выяснить причину. С данными и возможностями их обработки мы получаем новые знания. Любая индустрия от этого только выигрывает.

Если тебя заинтересовало направление, советую такие ресурсы. Это база, которая поможет понять теорию и прокачать скилы, необходимые для работы с данными:


Чтобы не пропустить новые статьи Ильи Кальченко — подпишитесь на него в телеграм-боте Ленты DOU .

Опубліковано: 23/12/20 @ 01:00
Розділ Різне

Рекомендуємо:

Як банк модернізував застарілі ІТ-системи та мігрував у "хмару"
300+ запитань з JavaScript для Junior, Middle та Senior
Синхронізація в Go: використання спільних даних
PHP: Настраиваем отладку. PhpStorm + PHP 8 + Docker + Xdebug 3
От шока до принятия: пять стадий тестирования API