PySpark na dużą skalę

Wprowadzenie do PySpark

Benjamin Schmidt

Data Engineer

Wykorzystanie skali

  • PySpark efektywnie obsługuje gigabajty i terabajty danych
  • Celem jest szybkie i wydajne przetwarzanie
  • Zrozumienie wykonania PySpark zwiększa efektywność
  • Użyć broadcast do zarządzania całym klastrem
joined_df = large_df.join(broadcast(small_df), 
                          on="key_column", how="inner")
joined_df.show()
Wprowadzenie do PySpark

Plany wykonania

# Using explain() to view the execution plan
df.filter(df.Age > 40).select("Name").explain()
== Physical Plan ==
*(1) Filter (isnotnull(Age) AND (Age > 30))
+- Scan ExistingRDD[Name:String, Age:Int]
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.explain.html
Wprowadzenie do PySpark

Caching i persisting DataFrames

  • Caching: Przechowuje dane w pamięci dla szybszego dostępu do mniejszych zbiorów
  • Persisting: Przechowuje dane na różnych poziomach pamięci dla większych zbiorów
df = spark.read.csv("large_dataset.csv", header=True, inferSchema=True)

# Cache the DataFrame
df.cache()

# Perform multiple operations on the cached DataFrame df.filter(df["column1"] > 50).show() df.groupBy("column2").count().show()
Wprowadzenie do PySpark

Persisting DataFrames na różnych poziomach pamięci

# Persist the DataFrame with storage level
from pyspark import StorageLevel

df.persist(StorageLevel.MEMORY_AND_DISK)

# Perform transformations result = df.groupBy("column3").agg({"column4": "sum"}) result.show() # Unpersist after use df.unpersist()
Wprowadzenie do PySpark

Optymalizacja PySpark

  • Małe podzbiory: Im więcej danych, tym wolniejsza operacja – wybierać map() zamiast groupby() ze względu na selektywność
  • Broadcast Joins: Broadcast wykorzystuje wszystkie zasoby obliczeniowe, nawet dla małych zbiorów
  • Unikać powtarzanych operacji: Wielokrotne przetwarzanie tych samych danych kosztuje czas i zasoby bez korzyści
Wprowadzenie do PySpark

Czas na ćwiczenia!

Wprowadzenie do PySpark

Preparing Video For Download...