How to стать Data инженером
https://t.me/postypashki_old/258Все слышали про аналитиков и дата саентистов, но кроме них в big data есть такие ребята, как дата инженеры. Эта область подойдет больше тем, кто предпочитает прогать и разбираться в новых technology, но при этом не особо интересуется математикой, не хочет проводить постоянные АB-тесты. При этом получают дата инженеры столько же, сколько и дата сайнтисы, и больше на начальном этапе, чем аналитики. И это при том, что вакансий больше, особенно на старшие грейды. Да и с учетом СВО вакансий на старший грейд стало в разы больше, то есть поработав полгода-год можно спокойно стать мидлом.
Если вкратце, дата инженеры собирают витрины(таблички) данных, из каких-то других табличек, файлов, и делают так, чтобы это работало четко, с наименьшими затратами по ресурсам. Работать приходится с огромным количеством данных, и необходимо это постоянно оптимизировать.
Но что нужно знать хорошему дата инженеру? Тут как раз возникает загвоздка в виде того, что многие технологии не развернуть и не пощупать полноценным образом на одном компьютере, но для оффера на стажировку, junior позицию будет достаточно знать просто теоретическую архитектуру. Итак, начнем:
Первое, что нужно знать – SQL: тут все понятно, любой курс или интерактивный тренажер нам подходит, главное делать особый упор на подзапросы и оконные функции, они в работе необходимы как вода, и на собеседованиях любят давать задачки именно на них. Желательно отрешать задачи на sql-ex. Потом они еще пригодятся нам. Также стоит почитать про Postgres, Oracle и ознакомиться с тем, какие бывают NoSQL базы данных: почитать про это можно вот здесь и здесь
Второе, что нужно знать любому дата инженеру – Hadoop. Для знакомства подходит неплохой курс от ВК. Самые важные вещи, которые стоит изучить и помнить всегда – архитектура HDFS, MapReduce, Yarn. C тем же mapreduce достаточно просто знать, как именно идет выполнение задач, какие промежуточные шаги и т.д. Далее идем читать доку с официального сайта. Обращаем внимание на все детали и нюансы (как идет разбиение файлов, обращение пользователя, проблемы с хранением маленьких файлов и т.д.) Почитать можно про одну из проблем можно вот тут. Можно даже попробовать развернуть у себя на компьютере, и потыкаться, это будет полезно, но с реальной работой иметь будет мало общего.
Также полезно почитать про Hive и Impala, как они выполняют запросы, в чем преимущества и минусы каждого. Например, можно почитать тут.
Еще необходимо знать форматы файлов, с которыми работает Hadoop, особенно кроме знакомых нам csv и json нужно обязательно знать про колоночные форматы: parquet и orc, какой из них лучше производит сжатие, кто лучше работает с тем же hive и т.д. Почитать можно вот тут.
Третье – Apache Airflow. Помните, я сказал насчет постоянных запусков? Так вот Airflow для этого и нужен, он используется буквально везде, как в банках (кроме, разве что, некоторых проектов Сбера). Это оркестратор, который позволяет запускать наши приложения по расписанию. У него довольно простая архитектура, но желательно знать тоже про то, что такое сенсор, хук, экзекьютор и т.д. Его тоже можно развернуть локально через docker, и попробовать написать свой собственный DAG(направленный ациклический граф), про них можно почитать здесь.
Четвертое, но очень важная вещь – Apache Spark. Это фреймворк для эффективного взаимодействия с большими данными, который пришел на смену концепции MapReduce. Сначала что делаем? Конечно идем на офф.сайт и смотрим картинки с архитектурой.
Тут возникает также необходимость учить такой язык как Scala, поскольку взаимодействие со Спарком происходит именно через него (также есть Pyspark, на нашем любимом питоне, можно работать с ним, и во многих командах пишут именно на нем, но там +- тоже самое). Курса от тинькова будет более чем достаточно. Далее читаем про структуры данных в нем(RDD, Датафрейм и Датасеты), различия между ними, в чем плюсы и минусы каждого. Хорошо показано это вот тут. Также нужно почитать про Catalyst, как он оптимизирует запросы, про Spark SQL, хорошим тоном в среде разработчиков, конечно, является его не использование, из-за не такой эффективной оптимизации, но для каких-нибудь небольших таблиц можно спокойно. Ну и самое важное, что важно знать из этого, и если расскажете про это на собеседовании это будет большим плюсом: оптимизация операции Join в спарк, например, вот тут можно почитать про это. В целом чем больше вы будете знать про оптимизацию работы приложения в спарке, тем лучше, в офф.доке неплохо довольно все это описано.
К счастью, попробовать взаимодействовать со спарком проще, чем тем же Хадупом. Для этого достаточно установить Intellij IDE и по гайду все настроить. После этого, очень советую взять все то, что вы нарешали в sql-ex и сделать тоже самое, только с помощью Спарка, просто попробовать пощупать и локально позапускать.
Последнее, что необходимо, но не настолько важно – Linux. Достаточно знать стандартные команды вроде mkdir, ls и прочее, ничего суперсложного, но все-таки иногда нужно в работе. Любого бесплатного курса будет достаточно.
На этом, пожалуй все, да, технологий для изучения много, но поверьте, все не так страшно как выглядит. Главное начать! А если хотите пройти этот путь быстро и без страданий, записывайтесь на наши курсы и консультации.