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