Parquet फाइलों के साथ काम

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Liam Brannigan

Data Scientist & Polars Contributor

फाइल स्टोरेज फॉर्मैट

एक DataFrame का चित्र

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

CSV फॉर्मैट

CSV को पंक्ति-दर-पंक्ति स्टोरेज दिखाने वाला चित्र, हर रिकॉर्ड पूरी पंक्ति में सहेजा जाता है.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet फॉर्मैट

Parquet को कॉलम-ओरिएंटेड स्टोरेज दिखाने वाला चित्र, एक ही कॉलम के मान साथ रखे जाते हैं.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

आर्काइव कन्वर्ट करना

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

)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

आर्काइव कन्वर्ट करना

(
    pl.read_csv("311_Service_Requests.csv", try_parse_dates=True)
    .write_parquet("311_Service_Requests.parquet")
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet फाइल जाँचना

pl.read_parquet_schema(
    "311_Service_Requests.parquet"
)
Schema(
    "CREATED_DATE": Datetime,
    "TYPE": String,
    "STATUS": String,
    "DEPARTMENT": String,
    "WARD": Int64,
    ...
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

CSV बनाम Parquet

$$

CSV
  • 4.8 GB
  • 14 seconds

$$

Parquet
  • 0.6 GB
  • 1.4 seconds

csv और parquet तुलना चित्र

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet पंक्तियाँ जोड़ने के लिए नहीं है

new_request = {"TYPE": "Pothole", "STATUS": "Open", ...}
  • जोड़ने के लिए CSV
  • पढ़ने के लिए Parquet
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet row groups

पंक्ति समूहों में बँटी Parquet फाइल का चित्र.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Row groups के साथ फ़िल्टर करना

(
    pl.scan_parquet("311_Service_Requests.parquet")
    .filter(pl.col("CREATED_DATE") < pl.datetime(2020, 1, 1))
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet row groups

Row groups वाले Parquet फाइल का चित्र.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet row groups

Row groups और आँकड़ों वाले Parquet फाइल का चित्र.

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

पैरेलल स्ट्रैटेजी के साथ स्कैन करना

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

    )
)
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

पैरेलल स्ट्रैटेजी के साथ स्कैन करना

(
    pl.scan_parquet(
        "311_Service_Requests.parquet",
        parallel="row_groups",
    )
)
  • columns
  • prefiltered
  • none
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet लिखना नियंत्रित करना

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

)
  • फाइल आकार छोटे
  • पढ़ने और लिखने में समय अधिक
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Parquet लिखना नियंत्रित करना

department_counts.write_parquet(
    "department_counts.parquet",
    compression_level=3,
    row_group_size=25_000,
)
  • फाइल आकार छोटे
  • पढ़ने और लिखने में समय अधिक
  • पढ़ने के लिए आँकड़े अधिक
Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

अभ्यास करते हैं!

Polars के साथ Data Pipelines का स्केलिंग और ऑप्टिमाइज़ेशन

Preparing Video For Download...