Apache Spark
Apache Spark является самый популярным инструментом среди инженеров данных, аналитиков и инженеров машинного обучения. Его главная задача это обработка данных. С помощью Spark можно подключаться к любому источнику данных, читать большие данные и обрабатывать их в оперативной памяти с использованием распределенного вычисления (distributed computing).
В зависимости от вашей роли вам необходимо знать от написание запросов в PySpark
и SparkSQL
(реже Scala
) до развертывание решений Big Data на Apache Spark.
Мы собрали несколько видео и лабораторных работ, которые вам помогут понять, что такое Apache Spark и как им пользоваться. Давайте посмотрим не примеры использования для ролей:
- Дата Инженер:
- Создание Data Lake или Lake House. Если делаем Lakehouse, то формат таблицы будет по умолчанию
Delta
, но сейчас уже чаще используетсяIceberg
. - Трансформация и обоботка данных для ETL/ELT процессов.
- Потоковая обработка с Apache Spark Streaming
- Помощь ML команде в создание ML решений, например создание
Feature Store
для предрасчета параметров ML модели.
- Создание Data Lake или Lake House. Если делаем Lakehouse, то формат таблицы будет по умолчанию
- Аналитик и BI разработчик:
- Типичные запросы к Data Lake/Lakehouse с использование
SparkSQL
,PySpark
. - Добавиление и модификация ETL jobs (data pipelines)
- Чтение
source code
, то есть понимание трансформаций данных.
- Типичные запросы к Data Lake/Lakehouse с использование
🇷🇺 / 🇬🇧 - язык материалов
⭐ - наша рекомендация
Посмотрите видео Что такое Apache Spark 🇷🇺 ⭐.
В этом видео вы узнаете:
- Узнаем история Apache Spark
- Посмотрим примеры архитектур с использованием Spark
- Разберемся когда его можно использовать
- Узнаем про основные компоненты
- Узнаем, обозначает термин Unified Analytics
Прежде, чем начать работать с Apache Spark, мы должны иметь необходимый минимум работы хотя бы одного из поддерживаемых языков программирования. Один из самых популярных языков - Python.
Вы можете ознакомится с ресурсами по самостоятельному обучению Python на нашем портале.
Поэтому в этом уроке мы посмотрим, какие команды нам необходимо знать на примере Databricks notebooks. У вас будет замечательная возможно попрактиковаться, и если вдруг вы мало используете Python, то самое время попробовать его, так как дальше нам очень понадобится.
Минимум Python для работы со Spark (JUST ENOUGH PYTHON FOR SPARK) 🇷🇺 ⭐.
В этом видео вы узнаете:
- Что такое Databricks
- Как запустить Community Edition Databricks и какие есть еще варианты для бесплатного Spark
- Переменные и типы данных в Python
- Условия и циклы
- Методы, функции и библиотеки
- Коллекции и классы
Для лабораторной работы вам нужно:
- Создать Databricks Community Edition. Если какие-то проблемы с Databricks, можно все делать на локальном спарке. В следующем уроке покажу, как можно его установить.
- Испортировать Notebooks с примерами для
Just Enougth Python for Spark
- Репозиторий с кодом - Выполнить задачки в папке
Labs
Так же вы можете использовать Google Collab или локальный Spark. Для решения Notebooks может подойти Jupyter Notebooks.
Теперь мы можем начать работать с Apache Spark на локальной машине. Посмотрите видео - Начало работы с Apache Spark 🇷🇺 ⭐.
В этом видео вы узнаете:
- Скачаем и запустим Apache Spark
- Посмотрим как запустить Spark на Windows
- Посмотрим на Spark UI
- Узнаем про основные компоненты Spark
- Начнем использовать
PySpark
- Начнем использовать
spark-submit
Вы можете посмотреть видео про запуск программы в Apache Spark 🇷🇺 ⭐.
В качестве задания вы можете выполнить задание:
- Ваша задача установить Apache Spark на ваш компьютер и запустить
PySpark
. Этого может хватить вам для изучения спарка, практически до конца модуля. Так как команды везде очень похожи, а вот интерфейс и конфигурация разные. - Вам нужно взять программу про M&Ms из нашего репозитория и также взть файл с данными в том же репозитории в папке
data
. - Запустить спарк программу используя
spark-submit
и передать в качестве аргумента месторасположения файла с данными. - Вам необходимо взять тот же код про M&Ms, но теперь нужно будет его выполнить в интерактивном режиме. Я это сделал на примере Databricks, если есть доступ к нему, сделайте там, если нет, используйте командную строку или попробуйте вот этот рецепт Get Started with PySpark and Jupyter Notebook in 3 Minutes
Мы продолжим Знакомство с Spark API и потренируемся в написании PySpark
.
В этом видео вы узнаете:
- что такое RDD (Resilient Distributed Datasets)
- что такое DataFrame
- посмотрим на пример синтаксиса Scala vs Python
- типы данных Spark
- схему(schema) dataframe
- колонки (colums) и вычисляемы (expressions) поля dataframe
- основные операции при работе с dataframe (Reader, Wrtiter)
- примеры чтения разных источников и файлов (API, база данных, JSON, Parquet, CSV, TXT)
- различные операции для трансформации, фильтрации и агрегации данных в Spark DataFrame (прям как в SQL)
- Spark SQL, Catalyst Optimizer
- план запроса Spark
- примеры advance Spark функций и ноутбуков в Databticks
В качестве практики попробуйте повторить Запросы PySpark использую Spark CLI. Заодно, мы можем познакомиться ближе с Databriks и их курсом - Обзор курса Databrick - Programming with Apache Spark.
В качестве лабораторной работу, вам нужно будет ответить на вопросы про пожарную службу Сан-Франциско используя файлик с данными sf-fire-calls.csv
Вопросы находятся в файлике sf_fire.py
Теперь мы можем изучить Spark SQL и DataFrame.
В этом видео вы узнаете:
- Методы SparkSession для работы с SQL
- Как создавать таблицы и вьюхи
- Виды таблиц - Managed vs Unmanaged
- Примеры SQL запросов в PySpark
- Кеш в Spark
- Рельтат SQL запроса в DataFrame и наоборот
- Пример работы с различными файлами в Spark - Parquet, CSV, JSON, AVRO, ORC
- Пример использования Spark для бинарных файлов и изображений
- Функции и операции Spark
- UNION, JOIN для DataFrame
- Window Functions
- UDF
- Партиционирование данных и оптимизация с командами coalesce, repartition.
В качестве лаборатнорной работы вам нужно будет выполнить все запросы из примеров в CLI и Databricks.
Книги:
Курсы:
- Introduction to Big Data with PySpark - курс для ознакомления с библиотекой pyspark 🇬🇧
- PySpark on Google Colab 101 🇬🇧
- Databricks: Working with SQL at Scale - Spark SQL Tutorial
- Spark SQL Explained with Examples
Статьи:
- Что такое Apache Spark? 🇷🇺
- Apache Spark Installation on Windows 🇬🇧
- Install PySpark in Jupyter on Mac using Homebrew 🇬🇧
- Get Started with PySpark and Jupyter Notebook in 3 Minutes
- Beginners Guide to PySpark 🇬🇧
- Welcome to Spark… on Java: Интервью с Евгением Борисовым 🇷🇺
- Знакомство с Apache Spark 🇷🇺
- Spark local mode: обработка больших файлов на обычном ноутбуке 🇷🇺
- Apache Spark Key Terms, Explained 🇬🇧
- Apache Spark: оптимизация производительности на реальных примерах 🇷🇺
- Практика использования Spark SQL, или Как не наступить на грабли 🇷🇺
- Spark SQL, DataFrames and Datasets Guide 🇬🇧
- Databricks: Functions 🇬🇧
- Databricks: WindowFunctions 🇬🇧
Вебинары: