Course Code: pysprkub
Duration: 21 hours

Prerequisites:

學員應具備:

  • 具備Python程式設計實務經驗,包括函數、模組和基本的物件導向概念。
  • 具備使用Pandas和表格化資料處理工作流的基礎至中等經驗。
  • 熟悉PySpark和Spark DataFrame的基本操作,包括讀取資料、轉換、動作、聯結和聚合。
  • SQL和資料處理概念有一般性理解,包括篩選、分組和資料集聯結。
  • 熟悉Docker和Kubernetes概念,例如容器、映像檔和Pod。不需要Kubernetes管理經驗。
  • CSV、JSON和Parquet等常見資料格式有基本了解。

學員不需要是Kubernetes管理員或基礎架構專家。課程聚焦於資料工程師、開發人員和資料科學家如何從應用程式和設定角度理解並優化運行在Kubernetes上的Spark工作負載。

目標受眾

這門課程是為在雲端或容器化環境中使用Python和Spark開發、維護或優化資料處理和機器學習工作負載的專業人士而設計的。

特別適合以下人員:

  • 資料工程師:使用PySpark、分散式資料處理和ETL管線。
  • 資料科學家:使用Spark、Pandas或Polars處理大型資料集或運行機器學習工作負載。
  • Python開發人員:處理資料密集應用程式,並希望提升記憶體效率和處理效能。
  • 機器學習工程師:在共享的Kubernetes或雲端環境上管理資料準備和模型訓練工作負載。
  • 分析工程師:處理大型資料集並希望提升資料處理效率。
  • DevOps、平台和雲端工程師:支援Kubernetes上的Spark工作負載,並需要了解應用程式層級設定如何影響資源使用和效能。
  • 技術主管和解決方案架構師:參與設計或優化現代資料處理平台。

Overview:

這門三天的實務課程著重於在Kubernetes環境中使用PySpark、Pandas和Polars來建構並優化高效能的資料處理工作負載。

學員將對Spark應用程式如何在Kubernetes上執行,以及應用程式層級的設定決策如何影響效能、擴充性、資源消耗和成本,建立實務性的理解。課程涵蓋關鍵的優化領域,包括執行器大小、記憶體分配、動態分配、分割策略、Shuffle行為、小檔案問題以及高效的Parquet處理。

課程還處理使用Pandas時的常見挑戰,包括記憶體限制和記憶體不足失敗,並介紹Polars作為特定資料處理工作負載的高效能替代方案。透過動手練習,學員將診斷效能和記憶體問題,比較不同的設定策略,並將優化技術應用於現實的ETL和機器學習情境。

課程始終強調實務決策能力:了解如何識別瓶頸、選擇適當的工具、高效設定Spark,並平衡效能與基礎架構資源消耗及成本。

Course Outline:

模組1:大資料與Spark基礎

  • 大資料生態系概述及Spark在現代資料平台中的角色
  • 理解Spark架構:驅動程式、執行器、叢集管理器、惰性評估、DAG和执行計劃
  • RDD和DataFrame API的差異及何時使用每種方法
  • 建立和設定SparkSession,並理解應用程式設定的基礎

模組2:PySpark DataFrame

  • 從企業來源和格式讀取和寫入資料:CSV、JSON、Parquet和Delta
  • 使用PySpark DataFrame:轉換、動作、欄位表達式、篩選、聯結和聚合
  • 實施進階操作,如窗口函數、處理時間戳記和處理巢狀資料
  • 應用資料品質檢查,並撰寫可重用、可維護的PySpark程式碼

模組3:供Spark使用者參考的Kubernetes和Docker基礎

  • 理解Docker映像檔和Kubernetes Pod與Spark驅動程式和執行器過程的關係——這是叢集使用者而非管理員的概念視角
  • 理解當Spark任務在Kubernetes上運行時發生的事:Pod排程、資源請求和限制,以及會話設定如何映射到它們
  • 理解透過Spark會話參數控制的內容,與平台團隊透過叢集配置控制的內容之間的差異——以及為何此邊界對調優很重要
  • 動手練習:在沙箱叢集中檢查運行中的Spark-on-Kubernetes任務,並識別驅動程式和執行器Pod

模組4:Kubernetes上的Spark會話設定——深入分析

  • 理解執行器數量與執行器大小:記憶體與核心數的取捨,以及如何思考這些問題
  • 驅動程式和執行器的記憶體分配、記憶體開銷,以及這些如何轉換為Pod資源
  • 動態分配:它在Kubernetes上的行為、何時節省資源以及何時不節省
  • 動手練習:在不同的執行器和核心設定下運行相同的任務,並比較運行時間和資源使用情況

模組5:擴充行為與成本優化

  • 理解增加或移除節點如何改變任務行為、完成時間和資源消耗
  • 比較許多小執行器與較少大執行器:效能和成本的取捨
  • Shuffle行為和Shuffle分割調優,包括估算設定選擇的成本影響
  • 動手練習:將沙箱叢集從五個節點擴展到十個節點,並觀察對任務完成時間和資源消耗的影響

模組6:高效資料攝取與分割

  • 理解小檔案問題:為何來源分散在許多1–5 MB的Parquet檔案中會降低效能並扭曲分割
  • 重新分割(Repartitioning)和合併(Coalescing)策略
  • 控制讀取和寫入時的分割大小
  • 高效寫入Parquet,以避免在下游重新創建有問題的小檔案
  • 動手練習:載入由許多小Parquet分割組成的資料集,應用不同的重新分割策略,並比較優化前後的效能

模組7:Pandas記憶體管理與故障診斷

  • 理解Pandas中記憶體不足錯誤的根本原因並識別症狀
  • 應用在Spark和Pandas之間記憶體高效的轉換模式
  • 避免在將大型資料集寫入CSV時出現記憶體膨脹
  • 在受限環境中使用分塊處理和dtype優化
  • 動手練習:重現典型的Pandas記憶體不足情境,並使用分塊和dtype優化解決

模組8:Polars作為補充工具

  • 確定Polars相對於Pandas的定位:效能特性、惰性評估和記憶體行為
  • 理解Polars如何在現代雲端資料棣和遷移路線圖中與PySpark和Pandas並存,包括AWS環境
  • 動手練習:使用Polars重寫以Pandas為主的轉換,並比較記憶體使用和處理速度

模組9:將優化應用於ETL和ML工作負載

  • 在現實的ETL管線中應用設定、分割和記憶體管理原則
  • 理解在相同叢集上運行的機器學習工作負載特有的優化考量
  • 應用實務調優工作流,以系統性地診斷成本和效能問題
  • 動手練習:完成一個端到端的微型專案,結合資料載入、轉換和簡單的模型訓練步驟,由學員自行調優Spark設定

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