О чём курс
Apache Spark – один из самых распространенных инструментов, обеспечивающих гибкое масштабирование обработки данных в самых разных объемах. Если у вас есть кластер Spark, то достаточно один раз написать логику обработки данных на SQL с минимальным использованием кода на Python, Java или Scala и запустить приложение, независимо от того, хранится ли у вас 100 килобайт на одном узле или 100 терабайт на 100 узлах.
Неизбежные сбои на узлах и сбои сетевой инфраструктуры в таких распределенных системах можно устранять с помощью того же Spark, перезапуская при необходимости неработающие процессы. Такие широкие возможности управления выполнением распределенных запросов в реляционных СУБД доступны либо при наличии большого бюджета (тогда как Apache Spark доступен бесплатно), либо при условии существенных трудозатрат на разработку.
Для эффективного использования всех преимуществ Spark недостаточно просто развернуть кластер и написать SQL запросы. Разработчики должны понимать, что происходит во внутренней структуре, в противном случае неизбежны неприятные сюрпризы с производительностью системы.
Этот тренинг ориентирован прежде всего на разработчиков и аналитиков данных, которые только начинают знакомство с фреймворком Spark, но не ограничивается базовыми понятиями. Будут рассмотрены различные способы оптимизации Spark не только в случае SQL-подобных запросов для табличных данных, но и для других типов данных, например, текстов, а также в случае взаимодействия с внешними системами, например, Cassandra.
В данной версии курса для практических упражнений используется язык Python. Это
удобно для аналитиков данных, поскольку существенная часть упражнений
выполняется в тетрадях Jupyter.
Цели
Слушатели получат представление об основных концепциях и архитектуре Spark, научатся создавать табличные запросы, используя Spark SQL и DataFrame Python API, разрабатывать программы обработки данных как последовательности преобразований RDD, загружать данные для обработки Spark из систем JDBC, Kafka и Cassandra, а также сохранять полученные результаты во внешних хранилищах данных.
Целевая аудитория
Разработчики, архитекторы, аналитики данных.
Предварительная подготовка
Базовые навыки программирования на языке Python. Базовые знания SQL..
Для кого
Разработчик
Архитектор ПО
Big Data Analyst
Программа курса
01
Концепции и архитектура Spark
Map/Reduce и Spark в Hadoop. Примеры
Spark в Lambda-архитектуре
Кластеры для распределенной обработки данных
Как запустить Spark
Исполнители, задания, задачи в Spark
02
Программирование с помощью RDD: трансформации и действия
В чем разница между SparkSession и SparkContext
Как создавать и распараллеливать RDD
Как трансформировать RDD
Как анализировать и управлять обработкой RDD (план и DAG)
Как сохранять и хранить RDD в HDFS
Как группировать и соединять RDD
03
Программирование с помощью DataFrame
В чем разница между RDD и DataFrame
Как создавать и распараллеливать DataFrame
Как анализировать и управлять выполнением DataFrame (план и DAG)
Как сохранять DataFrame в HDFS
04
Загрузка данных с внешних хранилищ и во внешние хранилища
Как читать/писать данные с файлового хранилища (HDFS, S3, FTP, локальной файловой системы)
Какой формат данных выбрать
Как распараллеливать чтение/запись в JDBC
Как создать DataFrame из MPP (Cassandra, Vertica, Greenplum)
Как работать с Kafka
05
Написание логики с использованием Spark DSL
Как считать строки
Как обрабатывать математические агрегации
Как группировать строки
Как правильное соединять DataFrames
06
Написание логики с использованием Spark SQL
Как и зачем переключаться на Spark SQL
Как работать с таблицей EXTERNAL
Как работать с таблицей MANAGED
07
Использование функций Window и UDF
Какие оконные функции существуют и как их использовать в Spark
Когда не следует использовать оконные функции
Что такое UDF, UDAF и как их использовать
Как оптимизировать UDFs в PySpark
Логические: как добавить фильтр
Численные: как подсчитать сумму, произведение, статистику
Строковый: как использовать регулярные выражения
Комплексные: как работать со структурами, массивами
Как работать с данными
09
Примеры оптимизации Spark
Недостаточно памяти
Маленькие файлы в HDFS
Асимметричные данные
Медленные соединения
Трансляция больших таблиц
Совместное использование ресурсов
Новые механизмы оптимизации: AQE и DPP
10
Запуск Spark в Airflow
Оркестраторы
Устройство Airflow
Встроенные операторы Airflow
SparkSubmitOperator
11
Всего: теория – 13 ч. (50%), практика и демонстрация – 13 ч. (50%)