Parquet dosyalarıyla çalışmak

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Liam Brannigan

Data Scientist & Polars Contributor

Dosya depolama biçimleri

Bir DataFrame diyagramı

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

CSV biçimi

CSV'nin satır bazlı depolama olduğunu, her kaydın tam bir satıra yayıldığını gösteren diyagram.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet biçimi

Parquet'in sütun odaklı depolama olduğunu, aynı sütundaki değerlerin birlikte gruplandığını gösteren diyagram.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Arşivi dönüştürme

(
    pl.read_csv("311_Service_Requests.csv", try_parse_dates=True)

)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Arşivi dönüştürme

(
    pl.read_csv("311_Service_Requests.csv", try_parse_dates=True)
    .write_parquet("311_Service_Requests.parquet")
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bir Parquet dosyasını incelemek

pl.read_parquet_schema(
    "311_Service_Requests.parquet"
)
Schema(
    "CREATED_DATE": Datetime,
    "TYPE": String,
    "STATUS": String,
    "DEPARTMENT": String,
    "WARD": Int64,
    ...
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

CSV ve Parquet

$$

CSV
  • 4.8 GB
  • 14 saniye

$$

Parquet
  • 0.6 GB
  • 1.4 saniye

csv ve parquet karşılaştırma görseli

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet satır eklemeye uygun değildir

new_request = {"TYPE": "Pothole", "STATUS": "Open", ...}
  • Eklemeler için CSV
  • Okumalar için Parquet
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet satır grupları

Parquet dosyasının satır gruplarına bölündüğünü gösteren diyagram.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Satır gruplarıyla filtreleme

(
    pl.scan_parquet("311_Service_Requests.parquet")
    .filter(pl.col("CREATED_DATE") < pl.datetime(2020, 1, 1))
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet satır grupları

Satır grupları olan bir Parquet dosyası diyagramı.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet satır grupları

Satır grupları ve istatistikleri olan bir Parquet dosyası diyagramı.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Paralel stratejilerle tarama

(
    pl.scan_parquet(
        "311_Service_Requests.parquet",

    )
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Paralel stratejilerle tarama

(
    pl.scan_parquet(
        "311_Service_Requests.parquet",
        parallel="row_groups",
    )
)
  • columns
  • prefiltered
  • none
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet yazımlarını kontrol etme

department_counts.write_parquet(
    "department_counts.parquet",
    compression_level=3,

)
  • Daha küçük dosyalar
  • Daha uzun okuma/yazma süreleri
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Parquet yazımlarını kontrol etme

department_counts.write_parquet(
    "department_counts.parquet",
    compression_level=3,
    row_group_size=25_000,
)
  • Daha küçük dosyalar
  • Daha uzun okuma/yazma süreleri
  • Okunacak daha çok istatistik
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Haydi pratik yapalım!

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Preparing Video For Download...