Как я бы учился Data Engineering в 2023 году (если бы мог начать заново)
Начало карьеры в Data Engineering может быть ошеломляющим из-за большого количества инструментов и технологий доступных на рынке.
Часто возникают вопросы: "Следует ли мне сначала изучать Databricks или Snowflake? Стоит ли сосредоточиться на Airflow или Hadoop?"
В этой стате я расскажу вам обо всем, начиная с базового уровня и заканчивая продвинутым уровнем всех ресурсов и навыков, которые понадобятся вам для того, чтобы стать профессионалом в области Data Engineering.
Я разделил шаги на 3 категории:
Для людей, которые полностью новички в данной области и хотят переквалифицироваться в Data Engineering из других областей.
Для людей, которые знакомы с некоторыми основами и хотят узнать, как продвигаться дальше.
Для людей, которые имеют некоторый опыт и хотят развиваться в своей карьере.
Шаг 1 - Исследование Неизвестного
Вы хотите переквалифицироваться в Data Engineering, но чувствуете себя ошеломленным количеством инструментов и технологий, доступных на рынке? Вы не одиноки. Многие люди оказываются в такой же ситуации, будь то работа не в технической сфере, студенты или новички, или работают в другой технической области и хотят сменить профессию.
Если вы относитесь к одной из этих категорий, первое, что вам нужно сделать, - освоить основы информатики.
Если вы совсем новичок в этой области, вам необходимо понимать базовые концепции и термины, используемые в информатике, прежде чем приступать к изучению Data Engineering.
Отличным ресурсом для этого является серия лекций, доступных на YouTube, предоставленных Harvard CS50.
Изучая эту серию видео, вы получите базовое понимание информатики, не имея степени или тратя месяцы на изучение основ.
Как только вы освоили основы информатики, вы можете перейти к следующему шагу: изучению навыков, необходимых для Data Engineering.
Существуют три фундаментальных навыка, необходимых для Data Engineering:
Языки программирования: в качестве инженера данных вы будете писать много заданий по трансформации, развертыванию скриптов, их проверке и тестированию, для этого вам нужно владеть одним языком программирования. Три популярных варианта - Java, Scala и Python. Если вы начинающий, Python - отличный вариант, так как он легок в обучении и понимании.
SQL: язык структурированных запросов - король в индустрии данных. Независимо от того, работаете ли вы в качестве аналитика данных, инженера данных или ученого-исследователя данных, вы обязательно будете часто использовать SQL. SQL - это способ общения с реляционной базой данных, и важно понимать, как его использовать для выбора, вставки, обновления и удаления данных.
Команды Linux: большинство задач по инженерии данных выполняются на удаленных машинах или облачных платформах, и эти машины, как правило, работают на операционных системах Linux. Важно понимать, как работать с этими машинами и понимать основные команды Linux.
Шаг 2: Создание прочной основы
На этом этапе вашей целью должно быть изучение минимального набора навыков, необходимых для Data Engineering, и того, как начать карьеру в качестве инженера данных.
Вам не нужно тратить время на изучение каждого навыка или инструмента, доступного на рынке; вам нужно просто сосредоточится на том, что вам нужно для выполнения базовых функций своей профессии.
На этом этапе мы сосредоточимся на создании прочной основы для Data Engineering.
Первым фундаментальным навыком, на котором необходимо сосредоточиться, является понимание работы хранилищ данных.
Этот навык включает две части:
Изучение основ работы хранилищ данных
Изучение инструментов, таких как Snowflake или BigQuery.
Основы работы хранилищ данных обычно включают понимание OLTP, размерных таблиц, извлечение, трансформацию, загрузку и моделирование данных, таких как понимание фактов и размерностей.
Если вы предпочитаете учиться по книгам, вы можете прочитать "The Data Warehouse Toolkit" от Ральфа Кимбалла.
Эта книга является одной из лучших книг, написанных о хранилищах данных.
После изучения основ хранилища данных, вы можете применить то, что вы узнали, к конкретному инструменту.
На рынке доступно множество различных хранилищ данных, таких как Snowflake, BigQuery и Redshift.
Рекомендуется изучать Snowflake, поскольку его спрос растет изо дня в день.
Кроме понимания хранения данных, вам также необходимо понимать фреймворки обработки данных.
Существует два основных фреймворка обработки данных:
Пакетная обработка: обработка данных пакетами, например, обработка данных прошлого месяца один или два раза в день.
Обработка в реальном времени: обработка данных по мере поступления в реальном времени.
Для пакетной обработки большинство компаний используют Apache Spark. Это открытый фреймворк для обработки данных.
Вы можете начать с изучения основ Apache Spark, а затем ознакомиться с инструментом, который работает в Apache Spark, таким как Databricks, AWS EMR, GCP Data Proc или любым другим инструментом, который вы найдете на рынке.
Мой совет - попрактиковаться с SparkCon и Databrick, используя PySpark (Python) в качестве языка.
Для обработки данных в реальном времени мы имеем фреймворки и инструменты, такие как Apache Kafka, Apache Flink и Apache Storm. Вы можете выбрать один и изучить его.
Мы учимся, разбивая разные проблемы на более мелкие части.
Сначала мы фокусируемся на изучении фундаментальных принципов, а затем изучаем один из очень востребованных инструментов на рынке, чтобы вы могли применить свои фундаментальные знания.
Третья навык, который вам необходимо освоить в качестве data engineer'а - это изучение облачных платформ. Здесь доступны три основных выбора - Microsoft Azure, Amazon Web Services (AWS) и Google Cloud Platform (GCP).
Я начал свою карьеру с AWS, но вы можете выбрать любую облачную платформу, потому что, однажды научившись одной, будет легче освоить другие. Фундаментальные концепции облачных платформ похожи, с небольшими различиями в пользовательском интерфейсе, стоимости и других факторах.
В Data Engineering вам необходимо создавать конвейеры данных для обработки ваших данных. Конвейеры данных, также известные как ETL-конвейеры, используются для извлечения данных из реляционной базы данных, применения преобразований и бизнес-логики, а затем загрузки данных в целевое местоположение. Чтобы управлять этими операциями, вам нужно изучить инструменты управления рабочими процессами.
Один из популярных выборов - Apache Airflow.
Airflow - это инструмент управления рабочими процессами с открытым исходным кодом, который позволяет создавать, планировать и отслеживать конвейеры данных. Он широко используется в промышленности и имеет большое пользовательское сообщество. Изучив Airflow, вы сможете создавать конвейеры данных и автоматизировать процесс ETL, что сделает вашу работу в качестве data engineer гораздо проще.
Шаг 3: Современный стек данных и продвинутые навыки
Как data engineer, на рынке доступно множество различных инструментов и подходов.
Важно оставаться в курсе и изучать все. Кроме того, вам необходимо также научиться проектировать всю инфраструктуру данных, управлять и масштабировать систему и овладеть продвинутыми навыками.
В этом шаге мы сосредоточимся на изучении продвинутых навыков, необходимых для Data Engineering.
Первое, что я рекомендую, это исследовать MDS( Modern Data Stack )
Это список инструментов, о которых вы можете узнать больше и понять их основное назначение.
Один из инструментов, который я настоятельно рекомендую изучить, это DBT (Data Build Tool), так как многие компании его используют, и он все более популярен на рынке.
Однако важно не привязываться к слишком большому количеству инструментов, просто понимать основное применение каждого из них.
Другой важный аспект - это понимание безопасности, сетевых технологий, развертывания и других связанных тем.
Также можно узнать о Docker или Kubernetes, которые полезны при развертывании конвейеров данных в производственной среде.
Также рекомендую прочесть эту книгу:
Кроме этого, чтение историй успеха клиентов на платформах, таких как AWS и GCP, может помочь лучше понимать, как использовать эти инструменты в реальных сценариях.