Сделали адаптированный перевод статьи 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 требования к кандидатам выше:
- знание Python, Java или Scala;
- опыт работы с технологиями обработки больших данных: Hadoop, Spark, Kafka;
- знание алгоритмов и структур данных;
- понимание основ распределённых систем;
- большим плюсом будет опыт работы с инструментами визуализации данных, такими как Tableau или ElasticSearch.
Основной упор в технологиях Big Data сейчас делают на их обработку в условиях высокой нагрузки. Поэтому компании повысили требования к отказоустойчивости системы.
- Освойте профессию с высоким окладом на низкоконкурентном рынке
- Научитесь автоматизировать работу с данными, настраивать мониторинги, создавать конвейеры обработки и схемы хранения данных
- Получите знания, равноценные опыту 2‒3 лет самостоятельного изучения инжиниринга данных
Инженеры данных и дата-сайентисты: в чём отличия
Чётких различий между ролью дата-сайентиста и инженера данных нет. Одна из причин в том, что инженерам может понадобиться разный набор навыков. Некоторые навыки актуальны для всех вакансий, другие — отличаются в зависимости от компании и проекта.
В тоже время в Data Science инструменты становятся проще, выводы на основе данных делают аналитики. Но для того, чтобы подготовить данные — задействовать конвейеры и интегрированные структуры данных, — дата-инженеры подойдут больше, чем дата-сайентисты.
Инженер данных сильнее в программировании, чем Data Scientist. Но когда дело доходит до статистики, всё с точностью до наоборот. При этом без инженера данных ценность модели-прототипа часто стремится к нулю. Дело в том, что модели-прототипы часто состоят из фрагмента кода Python низкого качества, который получен дата-сайентистом и непонятно как работает. Без инженера этот код не станет проектом, бизнес-проблему не получится эффективно решить — именно этот специалист превращает код в продукт.
Что нужно знать инженеру данных
Освоить специальность инженера данных можно без технического бэкграунда и умения программировать. Это сложно, но возможно. Адиль Хаштамов пишет, что новичкам на пути к профессии нужно пройти следующие шаги.
Изучите алгоритмы и структуры данных
Инженерам нужно разбираться в структурах данных и понимать работу баз данных и алгоритмов, которые лежат в их основе. Это важно потому, что правильная структура данных может значительно улучшить производительность алгоритма.
Проверьте себя. Понимаете ли вы, о чём идёт речь ниже?
Обычные B-tree SQL-базы данных основаны на структуре B-деревьев, а также на современных распределённых репозиториях LSM-деревьев и других модификациях хеш-таблиц.
Материалы для обучения
- Начните с бесплатных курсов от Udemy и Coursera: Easy to Advanced Data Structures, Algorithms, Part I, Algorithms, Part II.
- Когда освоите базовые понятия, смотрите ролики Университета Карнеги-Меллона, например, Intro to Database Systems и Advanced Database Systems.
- Когда нужно будет освежить знания, прочтите справочник Томаса Кормена «Алгоритмы. Построение и анализ».
- Практикуйтесь на Leetcode.
Освойте SQL
Чтобы извлечь данные из базы, нужно «говорить» с ними на одном языке. Этот язык — SQL. Сейчас можно услышать, что язык скоро никто не будет использовать. Но практика показывает другое: SQL востребован во многих проектах, его указывают в требованиях к кандидату в вакансиях. Современные хранилища больших данных вроде Amazon Redshift, HP Vertica, Oracle, SQL Server поддерживают SQL. Язык развивается, для анализа большого массива данных из распределённых систем вроде HDFS изобрели движки SQL-запросов: Apache Hive, Impala и другие.
Материалы для обучения:
- бесплатный курс Mode Analytics;
- платные курсы Intermediate SQL и Joining Data in SQL с интерактивной средой, в которой можно писать и выполнять SQL-запросы прямо в браузере;
- ресурс The Modern SQL;
- задачи Leetcode tasks.
Чтобы освоить язык, больше практикуйтесь.
- Перейдите на следующую ступень профессионального развития для аналитиков
- Научитесь извлекать данные и переносить их в хранилища в нужном виде без помощи разработчиков
- Получите востребованную за границей специальность
Научитесь писать код на Python и Java / Scala
Почитать о том, почему стоит учить Python, можно в статье «Python vs R. Выбор лучшего инструмента для искусственного интеллекта, машинного обучения и науки о данных».
С необходимостью Java и Scala всё очевидно: большинство инструментов для хранения и обработки больших данных написаны на этих языках. В их числе Hadoop, HDFS, Apache Cassandra, HBase, Apache Hive на Java и Apache Kafka и Apache Spark на Scala. Чтобы понять, как работают инструменты, нужно знать языки, на которых они написаны.
Функциональный подход языка Scala позволяет эффективно решать задачи параллельной обработки данных. В Python нет скорости и параллельной обработки. Но знать его нужно, ведь если вы знаете несколько языков и парадигм программирования, то сможете выбрать оптимальный вариант для решения конкретной проблемы.
Материалы для обучения:
- книга «Программирование в Scala» от создателя языка;
- вводное руководство «Школа Scala», опубликованное Twitter;
- пособие «Python. К вершинам мастерства», которое поможет освоить язык на среднем уровне.
Разберитесь в Big Data
Apache Spark, Apache Kafka, Apache Hadoop (HDFS, HBase, Hive), Apache Cassandra — популярные инструменты для работы с большими данными. В работе вы столкнётесь хотя бы с одним-двумя из них. Скорее всего это будут Spark и Kafka, задействованные во многих проектах. Инструменты стоит изучить так, чтобы понять, как они работают изнутри.
Подробнее узнать о составляющих Big Data можно в интерактивной среде.
Материалы для обучения:
- книга «Spark: полное руководство»;
- «Логирование: Что нужно знать об абстрагировании данных, получаемых в реальном времени» от соавтора Kafka Джея Крэпса — идеи работы легли в основу Apache Kafka;
- «Полное пособие по изучению Hadoop» для введения в Hadoop.
Освойте облачные платформы
Знание хотя бы одной облачной системы есть в требованиях почти каждой вакансии на должность инженера данных. Работодатели отдают предпочтение Amazon Web Services, реже — Google Cloud Platform и Microsoft Azure. Важно хорошо ориентироваться в Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
Поймите, как работают распределённые системы
Работа с большими данными подразумевает наличие кластеров независимо работающих компьютеров, общение между которыми происходит по сети. Чем крупнее кластер, тем больше вероятность выхода из строя входящих в него узлов. Чтобы стать специалистом в области данных, нужно предвидеть проблемы распределённых систем и знать возможные решения.
Материалы для обучения:
- вводная книга «Высоконагруженные приложения. Программирование, масштабирование, поддержка» Мартина Клеппмана и его блог помогут систематизировать знания о строении современной инфраструктуры для хранения и обработки больших данных;
- видеокурс «Распределённые компьютерные системы»;
- книга «Распределённые системы» Эндрю Таненбаума подойдёт тем, кто уже понимает основы распределённых систем и хочет прокачать знания.
Освойте конвейеры обработки данных
Конвейеры обработки данных — то, без чего инженеру данных не обойтись. Значительную часть рабочего времени он выстраивает процесс доставки данных из одного места в другое. Это могут быть кастомные скрипты, которые ходят в API внешнего сервиса или делают SQL-запрос, обогащают полученные данные и укладывают в централизованное хранилище (data warehouse) или хранилище неструктурированных данных (data lakes).
ЧИТАТЬ ТАКЖЕ
- Научитесь строить и обучать предиктивные модели с помощью алгоритмов машинного обучения и нейросетей
- Сможете находить скрытые закономерности, прогнозировать развитие событий и оптимизировать ключевые бизнес-процессы
Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.