📦 Apache Parquet – კოლონური მონაცემთა ფორმატი¶
Apache Parquet არის ღია, კოლონური (სვეტური) მონაცემთა ფორმატი, რომელიც ოპტიმიზირებულია დიდმასშტაბიანი ანალიტიკური მონაცემების ეფექტურად შესანახად და გადასაცემად.
🔍 რატომ Parquet?¶
- კოლონური შენახვა – მონაცემები ინახება სვეტების მიხედვით და არა მწკრივებად, რაც აჩქარებს ანალიტიკურ შეკითხვებს.
- მაღალი კომპრესია – მონაცემები უკეთესად იკუმშება, რადგან ერთ სვეტში ერთი და იგივე ტიპის მონაცემებია.
- მრავალენოვანი მხარდაჭერა – შესაძლებელია გამოყენება Python (pandas, pyarrow), R, Java, Spark და სხვა ტექნოლოგიებთან.
- შეესაბამება Hadoop-ის ეკოსისტემას – თავსებადია Hive, Impala, Drill, Spark და სხვებთან.
🧱 სტრუქტურა¶
Parquet ფაილი შედგება:
- Row Group-ებისგან – მონაცემთა ნაწყვეტები, რომლებიც შეიცავენ რიგებს.
- Column Chunk-ებისგან – თითოეული სვეტის მონაცემები Row Group-ის შიგნით.
- Page-ებისგან – Column Chunk დაყოფილია გვერდებად. თითო გვერდი შეიცავს მონაცემებს ან მეტამონაცემებს.
📈 უპირატესობები¶
| უპირატესობა | აღწერა |
|---|---|
| 🚀 სწრაფი კითხვა | განსაკუთრებით ეფექტურია იმ შემთხვევაში, როცა მხოლოდ გარკვეული სვეტებია საჭირო |
| 💾 სივრცის ეკონომია | კარგად იკუმშება და ამცირებს საცავზე დატვირთვას |
| 🔁 სკალირებადობა | ადვილად ადაპტირდება დიდ მონაცემთა ნაკადებზე |
| 🔌 ეკოსისტემასთან ინტეგრაცია | კარგად მუშაობს Spark, Hadoop, Hive, Presto და სხვებთან |
🧪 როგორ გამოვიყენოთ Python-ში?¶
import pandas as pd
# CSV-დან Parquet ფორმატში გარდაქმნა
df = pd.read_csv("data.csv")
df.to_parquet("data.parquet")
# Parquet ფაილის წაკითხვა
df_parquet = pd.read_parquet("data.parquet")
💡 შენიშვნა: საჭიროა
pyarrowანfastparquetბიბლიოთეკა.
🆚 Parquet vs CSV¶
| მახასიათებელი | Parquet | CSV |
|---|---|---|
| შენახვის ტიპი | კოლონური | მწკრივი |
| ფაილის ზომა | მცირე | დიდი |
| წაკითხვის სიჩქარე | მაღალი | დაბალი |
| მეტამონაცემები | კი | არა |
🌐 გამოყენების სფეროები¶
- მონაცემთა ანალიტიკა და BI
- მონაცემთა შენახვა დიდ მოცულობაზე (Data Lake)
- ETL პროცესები
- Machine Learning მონაცემების წინასწარი დამუშავება
📚 რესურსები¶
✅ შეჯამება¶
Apache Parquet წარმოადგენს თანამედროვე, ეფექტურ და სწრაფ ფაილის ფორმატს დიდი მოცულობის მონაცემთა ანალიზისთვის. ის განსაკუთრებით გამოსადეგია მაშინ, როცა საჭიროა მხოლოდ გარკვეული სვეტების წაკითხვა ან მონაცემების კომპაქტური შენახვა.