Если вы заинтересованы в проектировании крупномасштабных систем или работе с огромными объемами данных, вам подойдет Data Engineering. Роль Data Engineer в сообществе, управляемом данными, нельзя недооценивать, но глубина и широта этой области пугают любого новичка. Я изложил руководство, которому может следовать энтузиаст, чтобы проникнуть в поле.
1. Программирование и структуры данных
Голая необходимость любой роли в области компьютерных наук. Возможно, вам придется выбирать между Python/Scala/Java. Я бы порекомендовал Python, если вы начинаете, учитывая простой синтаксис и постепенную кривую обучения. Вы должны улучшить язык по вашему выбору, чтобы писать код производственного уровня. Чаще, чем большинство, вы обнаружите, что используете StackOverflow.
- Попрактикуйтесь в написании кода на конкурирующем сайте, таком как Hackerrank — https://www.hackerrank.com/ предоставляет прекрасную платформу для создания вашей базы на Python. Вы также можете предпочесть HackerEarth hackerrank. Оба одинаково хороши, но я бы предпочел Hackerrank для начинающих из-за его интерфейса.
- Выберите книгу. Я бы рекомендовал Изучать Python трудным путем — https://www.amazon.in/Learn-Python-Hard-Way-Introduction/dp/0321884914 или Data Структуры и алгоритмическое мышление с Python
- [ДОПОЛНИТЕЛЬНО] Если вы обнаружите, что просите большего, вы можете использовать «Алгоритмы Grokking» и «Азиз и Пракаш» для своих нужд на собеседовании. Опять же, это потрясающие книги, и они более чем возбудит ваше любопытство.
2. Базы данных и SQL
Это опять же очень важно для всех ваших потребностей в запросе и поиске данных. Глубокие знания об архитектуре и функционировании баз данных пригодятся при разработке крупномасштабных решений.
- Mode Analytics предлагает отличный ресурс для изучения SQL. Проверьте https://mode.com/sql-tutorial/introduction-to-sql/
- Имейте полную книгу по SQLЯ нашел https://books.goalkicker.com/SQLBook/ более чем достаточным.
- CMU выложил 2-кратный плейлист для систем баз данных | Введение в системы баз данных можно найти по адресу https://www.youtube.com/playlist?list=PLSE8ODhjZXjYutVzTeAds8xUt1rcmyT7x | Дополнительные системы баз данных можно найти по адресу https://www.youtube.com/playlist?list=PLSE8ODhjZXja7K1hjZ01UTVDnGQdx5v5U.
3. Системы и архитектура больших данных
Это обширная область, и невозможно охватить ее все, но всегда полезно хорошо изучить основы. Здесь чрезвычайно важны три вещи:
- Архитектура Hadoop
- Обработка данных, то есть сбор данных и преобразование их в удобную и желаемую форму. Apache Spark возглавил список уровней обработки данных, за ним следуют AWS Lambda, Elasticsearch, MapReduce, Oozie, Pig.
- Буферизация данных, которая является важной частью структуры проектирования данных, где данные необходимо временно хранить, пока они перемещаются из одного места в другое для обслуживания больших объемов.
- Разобраться с Hadoop. Краткий и самый быстрый способ сделать это — прочитать эту 72-страничную книгу на https://github.com/elephantscale/hadoop-book.
- Узнайте об Apache Spark — унифицированном аналитическом движке для крупномасштабной обработки данных на https://cognitiveclass.ai/learn/spark. Здесь вам, возможно, придется выбрать путь, по которому вы хотите пойти. В случае Python у вас есть Pyspark, иначе Scala — это путь. [Бонус] — Обработка Checkout Stream, архитектуры Lambda и Kappa.
- Узнайте об Apache Kafka — платформе распределенной потоковой передачи на https://cognitiveclass.ai/courses/simplifyingdatapipelines [бонус] — оформите заказ Apache Redis Pub-Sub, AWS Kinesis, Google Cloud PubSub
- Познакомьтесь с базовыми структурами, закоулками и зацепками распределенных систем. Я нашел канал Гаурава Сена на Youtube потрясающим, вы тоже можете его посмотреть.
4. Хранилища данных
- Поймите разницу между хранилищами данных и озерами данных — https://www.datacamp.com/community/blog/data-lakes-vs-data-warehouses
- Понимание и освоение базы данных NoSQL, предпочтительно Mongo — https://www.mongodb.com/what-is-mongodb | DynamoDB — https://www.dynamodbguide.com/what-is-dynamo-db/ | ElasticSearch — https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
- Исследуйте озера Дельты — https://docs.databricks.com/delta/delta-intro.html
5. DevOps
Вам не нужно быть мастером в devops, чтобы легко справиться с проектированием данных, но наличие идеи всегда помогает выйти из сложной ситуации.
- Линукс. Период. Освойте команды Linux. Вы можете следить за моей шпаргалкой здесь по адресу https://github.com/sagar8080/SoftCode/blob/master/01-First-Principles/01-Linux/why-linux.md.
- Узнайте о процессе развертывания программного обеспечения.
- Освойте Git, так как он чаще всего используется. https://github.com/sagar8080/SoftCode/blob/master/01-First-Principles/03-Version-Control/version_control.md
- Инструменты автоматизации, такие как Jenkins, для автоматизации сборки и подключения вашего кода к репозиторию кода. CI-CD
- Небольшая идея об инфраструктуре как коде.
- Контейнеры — Докер https://www.youtube.com/watch?v=fqMOX6JJhGo
- Оркестрация контейнеров — Kubernetes https://www.youtube.com/watch?v=F-p_7XaEC84
Разное
Визуализация данных — это представление данных или информации в виде графика, диаграммы или других визуальных форматов. Он передает отношения данных с изображениями — Tableau и PowerBI.
Полезные ресурсы
- Блог — https://mode.com/analytics-dispatch/data-engineering-articles/
- Подкаст — https://www.dataengineeringpodcast.com/
- YouTube — https://www.youtube.com/watch?v=Gn51h3Kl808&list=PLYUMVUCNosJft10ouy9mfSUD9XEkqYhph
В заключение я хотел бы сказать, что приведенные выше ресурсы довольно обширны и определенно помогут вам заинтересоваться. Когда я начинал пару лет назад, я был на шестерках и семерках, пытаясь найти лучшие ресурсы для обучения, и в этом посте я попытался кратко обобщить свое путешествие, имея в виду текущие требования.
Я надеюсь, что вы найдете это полезным. Счастливого обучения :)