🎯 Definicja
Format w Pamięci Operacyjnej (np. Apache Arrow) to ustandaryzowany sposób układania danych w kościach RAM, który pozwala na ich błyskawiczne przetwarzanie przez procesor (CPU/GPU) bez konieczności kosztownej serializacji i deserializacji przy przesyłaniu między narzędziami.
🔑 Kluczowe punkty
- Kolumnowy: Dane tego samego typu (np. ceny wszystkich transakcji) leżą obok siebie w pamięci.
- SIMD (Single Instruction, Multiple Data): Procesor może wykonać jedną instrukcję (np. mnożenie) na wielu liczbach naraz.
- Language Agnostic: Python (Pandas), Java (Spark) i C++ mogą czytać ten sam kawałek pamięci bez kopiowania (“Zero-Copy”).
📚 Szczegółowe wyjaśnienie
Tradycyjnie: Python ma swoje obiekty w RAM, Java swoje. Żeby przesłać dane z Pythona do Sparka (Java), trzeba je zamienić na bajty (Serialize), wysłać, i odtworzyć (Deserialize). To zjada 80% czasu procesora. In-Memory Format (Arrow): Python i Spark umawiają się na ten sam układ bitów w RAM. Python wystawia wskaźnik, Spark go czyta. Czas narzutu = 0.
💡 Przykład zastosowania
Biblioteka Polars (szybka alternatywa dla Pandas). Używa formatu Arrow w pamięci. Dzięki temu, gdy wczytujesz plik Parquet (też kolumnowy), dane wskakują do RAM-u prawie bez przekształceń. Operacje sortowania czy filtrowania są 10-50x szybsze niż w Pandas, który używa narzutu obiektowego Pythona.
📌 Źródła
- Apache Arrow Documentation.
- “The Composable Data Management System”.
👽 Brudnopis
- To fundament nowoczesnego Data Engineeringu (Spark, Dremio, Snowflake, DuckDB - wszyscy używają wariacji tego formatu).
- Unikaj “Row-based” formatów w RAM do analityki.