Съдържание и теми, включени в курса
Модул 1: Основни принципи на Big Data и Spark
- Преглед на екосистемата на Big Data и ролята на Spark в съвременните платформи за данни
- Разбиране на архитектурата на Spark: driver, executors, клъстер мениджър, инертична евалуация, DAG и планиране на изпълнението
- Разлики между API-тата за RDD и DataFrame и кога да се използва всяка подхода
- Създаване и конфигуриране на SparkSession и разбиране на основите на конфигурацията на приложението
Модул 2: PySpark DataFrames
- Четене и записване на данни от корпоративни източници и формати: CSV, JSON, Parquet и Delta
- Работа с PySpark DataFrames: трансформации, действия, изрази за колони, филтриране, свързвания и агрегации
- Прилагане на напреднали операции като прозореви функции, обработка на времеви печати и работа с вградени данни
- Прилагане на проверки за качество на данните и записване на переиспользуваем, поддържащ се код на PySpark
Модул 3: Основни принципи на Kubernetes и Docker за потребители на Spark
- Разбиране на връзката между Docker образите и Kubernetes подовете (pods) с процесите на Spark driver и executors — концептуален поглед за потребители на клъстера, а не администратори
- Разбиране на това, което се случва при изпълнение на Spark задача в Kubernetes: планиране на подовете, заявки и лимити на ресурси, и как настройките на сесията се отнасят до тях
- Разбиране на това, което контролирате чрез параметри на Spark сесията, в сравнение с това, което екипът на платформата контролира чрез предоставянето на клъстера — и защо тази граница е важна за настройката
- Практическо упражнение: Инспектиране на работеща Spark-on-Kubernetes задача в песъчници клъстър и идентифициране на driver и executor подовете
Модул 4: Конфигурация на Spark сесията в Kubernetes — дълбоко потопяване
- Разбиране на броя на executor-ите спрямо размера им: компромис между памет и ядра и как да разсъждавате за тях
- Разпределение на паметта за driver и executors, допълнителна памет (overhead) и как те се трансформират в ресурси на подовете
- Динамично разпределение: как се държи в Kubernetes, кога спестява ресурси и кога не
- Практическо упражнение: Пускане на една и съща задача с различни конфигурации на executor и ядра и сравняване на времето за изпълнение и използването на ресурси
Модул 5: Поведение при мащабиране и оптимизация на разходите
- Разбиране на това как добавянето или премахването на възли променя поведението на задачата, времето за завършване и потреблението на ресурси
- Сравняване на много малки executors спрямо по-малко големи: компромиси между ефективност и разходи
- Поведение при shuffle и настройка на shuffle партиции, включително оценка на въздействието върху разходите от изборите на конфигурация
- Практическо упражнение: Мащабиране на песъчници клъстера от пет до десет възела и наблюдение на ефекта върху времето за завършване на задачата и потреблението на ресурси
Модул 6: Ефективна консумация и партициониране на данни
- Разбиране на проблема с малките файлове: защо източници, разделени на много Parquet файлове от 1–5 MB, влошават ефективността и изкривяват партиционирането
- Стратегии за репартициониране и обединяване (coalescing)
- Контролиране на размера на партициите при четене и записване
- Ефективно записване на Parquet, за да се избегне повторно създаване на проблема с малките файлове по-надолу в потока
- Практическо упражнение: Зареждане на набор от данни, съставен от много малки Parquet партиции, прилагане на различни стратегии за репартициониране и сравняване на ефективността преди и след оптимизация
Модул 7: Управление на паметта в Pandas и диагностика на сривове
- Разбиране на основните причини за грешки за изчерпване на паметта (out-of-memory) в Pandas и разпознаване на симптомите
- Прилагане на модели за енерго-ефективна конверсия между Spark и Pandas
- Избягване на неконтролируемо разширение на паметта при записване на големи набори от данни в CSV
- Използване на по-члено (chunked) обработка и оптимизация на типове данни (dtype) за ограничени среди
- Практическо упражнение: Възпроизвеждане на типичен сценарий за изчерпване на паметта в Pandas и неговото решаване чрез chunking и оптимизация на dtype
Модул 8: Polars като допълнителен инструмент
- Позициониране на Polars спрямо Pandas: характеристики на ефективността, инертична евалуация и поведение на паметта
- Разбиране на това къде Polars се вписва заедно с PySpark и Pandas в съвременните облачни стек-ове за данни и пътеки за миграция, включително среди на AWS
- Практическо упражнение: Переписване на Pandas-интензивна трансформация в Polars и сравняване на използването на паметта и скоростта на обработка
Модул 9: Прилагане на оптимизация в ETL и ML натоварвания
- Прилагане на принципите за конфигурация, партициониране и управление на паметта в реалистичен ETL пайплайн
- Разбиране на съображенията за оптимизация, специфични за работни натоварвания за машинно обучение, изпълнявани в един и същ клъстер
- Прилагане на практически процес за настройка, за систематична диагностика на проблеми с разходите и ефективността
- Практическо упражнение: Завършване на мини-проект от край до край, комбиниращ зареждане на данни, трансформация и просто стъпка за обучение на модел, като участниците сами настройват конфигурацията на Spark
Изисквания
Участниците трябва да имат:
- Практически опит с програмане на Python, включително функции, модули и основни концепции на обектно-ориентираното програмиране.
- Основи до междинен опит в работата с Pandas и потоци за обработка на таблични данни.
- Базово познаване на PySpark и Spark DataFrames, включително четене на данни, трансформации, действия, свързвания (joins) и агрегации.
- Общо разбиране на концепциите за SQL и обработка на данни, включително филтриране, групиране и свързване на набори от данни.
- Базово познаване на концепциите за Docker и Kubernetes, като контейнери, образи и подове (pods). Не се изисква опит в администрирането на Kubernetes.
- Базово разбиране на общи формати на данни като CSV, JSON и Parquet.
Участниците не трябва да са администратори на Kubernetes или специалисти по инфраструктура. Курсът се фокусира върху начина, по който данните инженери, разработчиците и специалистите по данни могат да разбират и оптимизират своите Spark работни натоварвания, изпълнявани в Kubernetes, от гледна точка на приложението и конфигурацията.
Целева аудитория
Този курс е предназначен за професионалисти, които разработват, поддържат или оптимизират работни натоварвания за обработка на данни и машинно обучение, използвайки Python и Spark в облачни или контейнеризирани среди.
Той е особено подходящ за:
- Данни инженери, работещи с PySpark, разпределена обработка на данни и ETL пайплайни.
- Специалисти по данни, обработващи големи обеми данни или изпълняващи работни натоварвания за машинно обучение с Spark, Pandas или Polars.
- Разработчици на Python, работещи с приложения, интензивно обработващи данни, и стремящи се към подобрение на ефективността на паметта и обработката.
- Инженери по машинно обучение, управляващи работни натоварвания за подготовка на данни и обучение на модели в споделени Kubernetes или облачни среди.
- Аналитични инженери, работещи с големи набори от данни и търсящи начини за повишаване на ефективността на обработката.
- DevOps, платформени и облачни инженери, поддържащи Spark работни натоварвания в Kubernetes и нуждаещи се от разбиране на това как конфигурацията на ниво приложение влияе върху използването на ресурси и ефективността.
- Технически лидери и архитекти на решения, участващи в проектирането или оптимизацията на модерни платформи за обработка на данни.
Отзиви от участници (1)
Ми ми допадна, че беше praktično. Обичах да прилагам теоретичните знания с практически примери.
Aurelia-Adriana - Allianz Services Romania
Курс - Python and Spark for Big Data (PySpark)
Машинен превод