Course Code: pysprkub
Duration: 21 hours
Prerequisites:
Uczestnicy powinni posiadać:
- Praktyczne doświadczenie w programowaniu w języku Python, w tym znajomość funkcji, modułów i podstawowych koncepcji programowania obiektowo-zorientowanego.
- Podstawowe do średniego doświadczenie w pracy z Pandasem i przepływami przetwarzania danych tabelarycznych.
- Podstawową znajomość PySparka i Spark DataFrame, w tym odczytywanie danych, transformacje, akcje, łączenia (joins) i agregacje.
- Powszechną wiedzę na temat SQL i koncepcji przetwarzania danych, w tym filtrowanie, grupowanie i łączenie zestawów danych.
- Podstawową znajomość koncepcji Dockera i Kubernetesa, takich jak kontenery, obrazy i pody. Doświadczenie w administracji Kubernetesem nie jest wymagane.
- Podstawowe zrozumienie popularnych formatów danych, takich jak CSV, JSON i Parquet.
Uczestnikom nie jest wymagane, aby byli administratorami Kubernetesa ani specjalistami ds. infrastruktury. Kurs koncentruje się na tym, jak inżynierowie danych, deweloperzy i naukowcy danych mogą rozumieć i optymalizować swoje obciążenia Spark działające w Kubernetesie z perspektywy aplikacji i konfiguracji.
Grupa docelowa
Kurs jest przeznaczony dla profesjonalistów, którzy tworzą, utrzymują lub optymalizują obciążenia przetwarzania danych i uczenia maszynowego z użyciem Pythona i Sparka w środowiskach chmurowych lub konteneryzowanych.
Jest on szczególnie odpowiedni dla:
- Inżynierów danych pracujących z PySparkiem, rozproszonym przetwarzaniem danych i potokami ETL.
- Naukowców danych przetwarzających duże zestawy danych lub uruchamiających obciążenia uczenia maszynowego za pomocą Sparka, Pandasa lub Polarsa.
- Deweloperów Pythona pracujących z aplikacjami intensywnymi pod względem danych, dążących do poprawy wydajności pamięci i przetwarzania.
- Inżynierów uczenia maszynowego zarządzających przygotowywaniem danych i obciążeniami szkolenia modeli w współdzielonych środowiskach Kubernetes lub chmurowych.
- Inżynierów analitycznych pracujących z dużymi zbiorami danych i dążących do poprawy wydajności przetwarzania danych.
- Inżynierów DevOps, Platform i Cloud wspierających obciążenia Spark w Kubernetesie, którzy muszą rozumieć wpływ konfiguracji na poziomie aplikacji na zużycie zasobów i wydajność.
- Kierowników technicznych i Architektów rozwiązań zaangażowanych w projektowanie lub optymalizację nowoczesnych platform przetwarzania danych.
Overview:
Ten trzudniowy, praktyczny kurs koncentruje się na budowaniu i optymalizacji wydajnych obciążeń przetwarzania danych przy użyciu PySpark, Pandas oraz Polars w środowiskach opartych na Kubernetesie.
Uczestnicy zdobędą praktyczną wiedzę na temat tego, jak aplikacje Spark są wykonywane w Kubernetesie oraz jak decyzje dotyczące konfiguracji na poziomie aplikacji wpływają na wydajność, skalowalność, zużycie zasobów i koszty. Kurs obejmuje kluczowe obszary optymalizacji, takie jak rozmiar executorów, alokacja pamięci, dynamiczna alokacja, strategie partycjonowania, zachowanie shuffle, problem małych plików oraz wydajne przetwarzanie formatu Parquet.
Kurs porusza również typowe wyzwania związane z pracą w Pandasie, w tym ograniczenia pamięci i błędy przekroczenia pamięci (out-of-memory), wprowadzając Polarsa jako wysokowydajną alternatywę dla wybranych zadań przetwarzania danych. Dzięki ćwiczeniom praktycznym uczestnicy nauczą się diagnozować problemy z wydajnością i pamięcią, porównywać różne strategie konfiguracyjne oraz stosować techniki optymalizacji w realistycznych scenariuszach ETL i uczenia maszynowego.
Przez cały kurs kładziemy nacisk na praktyczne podejmowanie decyzji: rozumienie sposobów identyfikowania wąskich gardeł, wybierania odpowiednich narzędzi, efektywnej konfiguracji Sparka oraz utrzymywania równowagi między wydajnością a zużyciem zasobów infrastruktury i kosztami.
Course Outline:
Moduł 1: Podstawy Big Data i Sparka
- Przegląd ekosystemu Big Data i rola Sparka we współczesnych platformach danych
- Zrozumienie architektury Sparka: sterownik (driver), executorzy, menedżer klastra, leniwa ewaluacja, DAG i planowanie wykonywania
- Różnice między API RDD a DataFrame oraz kiedy stosować każdy z tych podejść
- Tworzenie i konfigurowanie SparkSession oraz zrozumienie podstaw konfiguracji aplikacji
Moduł 2: PySpark DataFrames
- Odczytywanie i zapisywanie danych ze źródeł i formatów korporacyjnych: CSV, JSON, Parquet i Delta
- Praca z PySpark DataFrames: transformacje, akcje, wyrażenia kolumn, filtrowanie, łączenia (joins) i agregacje
- Implementacja zaawansowanych operacji, takich jak funkcje okienkowe, obsługa znaczników czasu i praca z zagnieżdżonymi danymi
- Stosowanie kontroli jakości danych i tworzenie ponownie używalnego, łatwego w utrzymaniu kodu PySpark
Moduł 3: Podstawy Dockera i Kubernetesa dla użytkowników Sparka
- Zrozumienie związku między obrazami Dockera i podami Kubernetesa a procesami sterownika i executorów Sparka — perspektywa koncepcyjna dla użytkowników klastra, a nie administratorów
- Zrozumienie, co dzieje się, gdy zadanie Spark jest uruchamiane w Kubernetesie: harmonogramowanie podów, żądania i limity zasobów oraz jak ustawienia sesji mapują się na te elementy
- Zrozumienie tego, co kontrolujesz za pomocą parametrów sesji Spark, w odróżnieniu od tego, co kontroluje zespół platformowy przez provisioning klastra — i dlaczego ta granica ma znaczenie dla strojenia
- Ćwiczenie praktyczne: Inspekcja działającego zadania Spark-on-Kubernetes w klastrze sandbox i zidentyfikowanie podów sterownika i executorów
Moduł 4: Konfiguracja sesji Spark w Kubernetesie — Analiza pogłębiona
- Zrozumienie rozmiary liczby executorów: kompromis między pamięcią a liczbą rdzeni oraz jak o tym myśleć
- Alokacja pamięci dla sterownika i executorów, nadmiar pamięci (memory overhead) oraz jak te elementy przekładają się na zasoby podów
- Dynamiczna alokacja: jak zachowuje się w Kubernetesie, kiedy oszczędza zasoby, a kiedy nie
- Ćwiczenie praktyczne: Uruchomienie tego samego zadania w różnych konfiguracjach executorów i rdzeni oraz porównanie czasu wykonania i zużycia zasobów
Moduł 5: Zachowanie skalowania i optymalizacja kosztów
- Zrozumienie, jak dodawanie lub usuwanie węzłów zmienia zachowanie zadania, czas zakończenia i zużycie zasobów
- Porównanie wielu małych executorów z mniejszą liczbą dużych: kompromisy między wydajnością a kosztami
- Zachowanie shuffle i strojenie partycji shuffle, w tym szacowanie wpływu kosztowego na wybory konfiguracyjne
- Ćwiczenie praktyczne: Skalowanie klastra sandboxa z pięciu do dziesięciu węzłów i obserwacja wpływu na czas zakończenia zadania i zużycie zasobów
Moduł 6: Wydajne pobieranie danych i partycjonowanie
- Zrozumienie problemu małych plików: dlaczego źródła podzielone na wiele plików Parquet o rozmiarze 1–5 MB pogarszają wydajność i zniekształcają partycjonowanie
- Strategie repartycjonowania i konsolidacji (coalescing)
- Kontrola rozmiaru partycji przy odczycie i zapisie
- Wydajne zapisywanie Parquet, aby uniknąć ponownego powstania problemu małych plików w dalszym przetwarzaniu
- Ćwiczenie praktyczne: Załadowanie zbioru danych składającego się z wielu małych partycji Parquet, zastosowanie różnych strategii repartycjonowania i porównanie wydajności przed i po optymalizacji
Moduł 7: Zarządzanie pamięcią w Pandasie i diagnoza awarii
- Zrozumienie przyczyn błędów out-of-memory w Pandasie i rozpoznawanie ich objawów
- Stosowanie wzorców wydajnej pamięciowo konwersji między Sparkiem a Pandasem
- Unikanie nadmiernego zużycia pamięci przy zapisywaniu dużych zbiorów danych do CSV
- Stosowanie przetwarzania partiami (chunked processing) i optymalizacji typów danych (dtype) w środowiskach o ograniczonych zasobach
- Ćwiczenie praktyczne: Odtworzenie typowego scenariusza out-of-memory w Pandasie i rozwiązanie go za pomocą przetwarzania partiami i optymalizacji typów danych
Moduł 8: Polars jako narzędzie uzupełniające
- Pozycjonowanie Polarsa w stosunku do Pandasa: cechy wydajnościowe, leniwa ewaluacja i zachowanie pamięci
- Zrozumienie, gdzie Polars pasuje obok PySparka i Pandasa we współczesnych chmurowych stosach danych i mapach drogowych migracji, w tym w środowiskach AWS
- Ćwiczenie praktyczne: Przepisanie transformacji intensywnych w Pandasie do Polarsa i porównanie zużycia pamięci oraz prędkości przetwarzania
Moduł 9: Stosowanie optymalizacji w obciążeniach ETL i ML
- Stosowanie zasad konfiguracji, partycjonowania i zarządzania pamięcią w realistycznym potoku ETL
- Zrozumienie kwestii optymalizacji specyficznych dla obciążeń uczenia maszynowego działających w tym samym klastrze
- Stosowanie praktycznego przepływu pracy strojenia, aby systematycznie diagnozować problemy z kosztami i wydajnością
- Ćwiczenie praktyczne: Ukończenie mini-projektu end-to-end łączącego ładowanie danych, transformacje i prosty krok szkolenia modelu, z uczestnikami strojącymi konfigurację Sparka we własnym zakresie
Sites Published:
United Arab Emirates - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Qatar - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Egypt - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Saudi Arabia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
South Africa - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Brasil - Processamento Eficiente de Dados no Kubernetes com PySpark, Pandas e Polars
Canada - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
中国 - 基于Kubernetes使用PySpark、Pandas和Polars实现高效数据处理
香港 - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
澳門 - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
台灣 - 使用PySpark、Pandas和Polars在Kubernetes上進行高效資料處理
USA - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Österreich - Effiziente Datenverarbeitung mit PySpark, Pandas und Polars auf Kubernetes
Schweiz - Effiziente Datenverarbeitung mit PySpark, Pandas und Polars auf Kubernetes
Deutschland - Effiziente Datenverarbeitung mit PySpark, Pandas und Polars auf Kubernetes
Czech Republic - Efektivní zpracování dat v Kubernetes pomocí PySpark, Pandas a Polars
Denmark - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Estonia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Finland - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Greece - Αποτελεσματική Επεξεργασία Δεδομένων σε Kubernetes με PySpark, Pandas & Polars
Magyarország - Hatékony adatfeldolgozás Kubernetesben PySpark, Pandas és Polars segítségével
Ireland - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Luxembourg - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Latvia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
España - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Italia - Elaborazione dati efficiente su Kubernetes con PySpark, Pandas e Polars
Lithuania - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Nederland - Efficiënte verwerking van data op Kubernetes met PySpark, Pandas & Polars
Norway - Effektiv databehandling på Kubernetes med PySpark, Pandas og Polars
Portugal - Processamento Eficiente de Dados no Kubernetes com PySpark, Pandas e Polars
România - Procesare eficientă a datelor pe Kubernetes cu PySpark, Pandas & Polars
Sverige - Effektiv datahantering med PySpark, Pandas och Polars på Kubernetes
Türkiye - Kubernetes Ortamında PySpark, Pandas ve Polars ile Verimli Veri İşleme
Malta - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Belgique - Traitement efficace des données sur Kubernetes avec PySpark, Pandas et Polars
France - Traitement efficace des données sur Kubernetes avec PySpark, Pandas et Polars
日本 - KubernetesにおけるPySpark、Pandas、Polarsによる効率的なデータ処理
Australia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Malaysia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
New Zealand - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Philippines - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Singapore - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Thailand - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Vietnam - Xử lý dữ liệu hiệu quả trên Kubernetes bằng PySpark, Pandas & Polars
India - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Argentina - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Chile - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Costa Rica - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Ecuador - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Guatemala - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Colombia - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
México - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Panama - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Peru - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Uruguay - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Venezuela - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Polska - Skuteczne przetwarzanie danych w Kubernetesie z wykorzystaniem PySpark, Pandas i Polars
United Kingdom - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
South Korea - PySpark, Pandas 및 Polars를 활용한 Kubernetes에서 효율적인 데이터 처리
Pakistan - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Sri Lanka - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Bulgaria - Ефективна обработка на данни в Kubernetes с PySpark, Pandas и Polars
Bolivia - Procesamiento de datos eficiente en Kubernetes con PySpark, Pandas y Polars
Indonesia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Kazakhstan - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Moldova - Procesare eficientă a datelor pe Kubernetes cu PySpark, Pandas & Polars
Morocco - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Tunisia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Kuwait - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Oman - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Slovakia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Kenya - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Nigeria - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Botswana - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Slovenia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Croatia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Serbia - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Bhutan - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Nepal - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
Uzbekistan - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars
US Government - Efficient Data Processing on Kubernetes with PySpark, Pandas & Polars