- Posted on
- β’ author - penulis
Apa itu Parquet File Format?
- Author
-
-
- User
- Parmi
- Posts by this author
- Posts by this author
-
Berikut rangkuman dari artikel βApa itu Parquet File Format?β di Ngoolie:
π Apa itu Parquet?
- Apache Parquet adalah format file open source berbasis kolom.
- Dirancang untuk penyimpanan dan pengambilan data yang efisien, terutama untuk big data dan data science.
- Mendukung kompresi dan encoding data yang optimal, sehingga cocok untuk data kompleks dalam jumlah besar.
π Karakteristik Parquet
- Gratis dan open source.
- Bahasa agnostik (bisa digunakan di berbagai bahasa pemrograman).
- Berbasis kolom, bukan baris β hemat ruang dan mempercepat query analitik.
- Efisien dalam kompresi/dekompresi.
- Mendukung tipe data kompleks dan nested structures.
π Manfaat Parquet
- Cocok untuk menyimpan data besar (tabel, gambar, video, dokumen).
- Menghemat ruang penyimpanan di cloud berkat kompresi kolom.
- Meningkatkan kinerja query karena hanya membaca kolom yang dibutuhkan.
- Minimalkan I/O saat mengakses data.
π Keuntungan Format Kolom
- Query lebih cepat karena bisa melewati data yang tidak relevan.
- Mendukung struktur data bersarang.
- Kompresi fleksibel per kolom β file lebih kecil, query lebih efisien.
- Optimal untuk layanan serverless seperti AWS Athena, Amazon Redshift Spectrum, Google BigQuery.
π Perbandingan Parquet vs CSV
| Aspek | CSV | Parquet |
|---|---|---|
| Ukuran di Amazon S3 | 1 TB | 130 GB |
| Waktu Query | 236 detik | 6,78 detik |
| Data yang discan | 1,15 TB | 2,51 GB |
| Biaya | $5,75 | $0,01 |
| Efisiensi | β | 87% lebih hemat storage, 34x lebih cepat, 99,7% lebih hemat biaya |
π― Kesimpulan
Parquet jauh lebih efisien dibanding CSV dalam hal penyimpanan, kecepatan query, dan biaya. Format ini sangat direkomendasikan untuk big data analytics dan penggunaan cloud computing.
---
π Contoh dengan Pandas
import pandas as pd
# Membuat DataFrame sederhana
data = {
"nama": ["Andi", "Budi", "Citra"],
"usia": [25, 30, 28],
"kota": ["Jakarta", "Bandung", "Surabaya"]
}
df = pd.DataFrame(data)
# Simpan ke file Parquet
df.to_parquet("data.parquet", engine="pyarrow", index=False)
# Baca kembali file Parquet
df_parquet = pd.read_parquet("data.parquet", engine="pyarrow")
print(df_parquet)
π Kelebihan: mudah digunakan, cocok untuk dataset kecil-menengah.
π Contoh dengan PySpark
from pyspark.sql import SparkSession
# Inisialisasi Spark
spark = SparkSession.builder.appName("ParquetExample").getOrCreate()
# Membuat DataFrame Spark
data = [("Andi", 25, "Jakarta"),
("Budi", 30, "Bandung"),
("Citra", 28, "Surabaya")]
columns = ["nama", "usia", "kota"]
df = spark.createDataFrame(data, columns)
# Simpan ke file Parquet
df.write.parquet("data_spark.parquet")
# Baca kembali file Parquet
df_parquet = spark.read.parquet("data_spark.parquet")
df_parquet.show()
π Kelebihan: sangat efisien untuk big data dan integrasi dengan ekosistem Hadoop/Spark.
Kalau kamu lebih sering bekerja dengan data kecil-menengah, cukup gunakan Pandas. Tapi kalau sudah masuk ke big data pipeline (misalnya di Hadoop, Spark, atau AWS EMR), maka PySpark lebih tepat.
Ya, benar sekali β Parquet memang jauh lebih efisien dibanding format tradisional seperti CSV, terutama untuk data besar dan kompleks. Berikut penjelasan berdasarkan hasil riset terbaru:
π Mengapa Parquet Lebih Efisien?
- Format kolom: Data disimpan per kolom, bukan per baris. Ini membuat query analitik lebih cepat karena hanya kolom yang relevan dibaca.
- Kompresi tinggi: Parquet mendukung kompresi per kolom (misalnya Snappy, Gzip), sehingga ukuran file bisa jauh lebih kecil dibanding CSV atau JSON.
- Optimasi untuk big data: Sangat cocok digunakan dengan framework seperti Apache Spark, Hadoop, Hive, dan AWS Athena.
- Efisiensi biaya cloud: Karena ukuran file lebih kecil, biaya penyimpanan dan query di layanan cloud (misalnya Amazon S3, BigQuery) bisa turun drastis.
π Perbandingan Parquet vs CSV
| Aspek | CSV | Parquet |
|---|---|---|
| Ukuran file | Besar (raw text) | Lebih kecil (kompresi kolom) |
| Kecepatan query | Lambat (scan semua data) | Cepat (scan kolom relevan) |
| Biaya cloud | Tinggi (banyak data discan) | Rendah (data lebih kecil) |
| Kompleksitas data | Terbatas (flat table) | Mendukung nested & kompleks |
Contoh nyata: sebuah dataset 1 TB dalam CSV bisa dikompresi menjadi hanya ~130 GB dalam Parquet, dengan query 34x lebih cepat dan biaya hampir 99% lebih murah.
π― Kesimpulan
- Parquet unggul untuk data besar, analitik, dan penggunaan cloud.
- CSV masih berguna untuk interoperabilitas sederhana (misalnya berbagi data antar sistem atau dibuka di Excel).
- Jika fokusmu adalah efisiensi, kecepatan, dan biaya, maka Parquet adalah pilihan yang lebih kuat.
Parquet memang dirancang khusus untuk efisiensi dalam menangani data besar dan kompleks. Supaya lebih nyata, mari kita lihat benchmark kecil dengan Python yang membandingkan ukuran file CSV vs Parquet dari dataset yang sama.
π Contoh Benchmark dengan Pandas
import pandas as pd
import numpy as np
import os
# Buat dataset dummy dengan 1 juta baris
data = {
"id": np.arange(1, 1000001),
"nama": np.random.choice(["Andi", "Budi", "Citra", "Dewi"], size=1000000),
"usia": np.random.randint(18, 60, size=1000000),
"kota": np.random.choice(["Jakarta", "Bandung", "Surabaya", "Medan"], size=1000000)
}
df = pd.DataFrame(data)
# Simpan ke CSV
df.to_csv("data.csv", index=False)
# Simpan ke Parquet
df.to_parquet("data.parquet", engine="pyarrow", index=False)
# Bandingkan ukuran file
csv_size = os.path.getsize("data.csv") / (1024*1024) # MB
parquet_size = os.path.getsize("data.parquet") / (1024*1024) # MB
print(f"Ukuran CSV: {csv_size:.2f} MB")
print(f"Ukuran Parquet: {parquet_size:.2f} MB")
π Hasil yang biasanya terlihat
- CSV: sekitar 150β200 MB
- Parquet: hanya 30β40 MB
π Artinya, Parquet bisa 4β6 kali lebih kecil dibanding CSV untuk dataset yang sama.
Selain itu, saat membaca file, Parquet jauh lebih cepat karena hanya membaca kolom yang diperlukan.
π― Kesimpulan
- Parquet unggul dalam hal ukuran file, kecepatan query, dan efisiensi biaya cloud.
- CSV tetap berguna untuk interoperabilitas sederhana (misalnya dibuka di Excel).
- Untuk big data analytics, Parquet adalah pilihan yang lebih kuat dan hemat.
Menarik pertanyaanmu π. Jadi, apakah Parquet bisa dimanfaatkan di shared hosting (Linux hosting tradisional)? Jawabannya: secara teknis bisa, tapi jarang dipakai di skenario hosting tradisional.
π Kenapa jarang dipakai di shared hosting?
- Parquet ditujukan untuk big data analytics: biasanya digunakan di ekosistem Hadoop, Spark, AWS Athena, Google BigQuery, atau data lake.
- Shared hosting (Linux cPanel, dsb.) umumnya dipakai untuk website (PHP, MySQL, WordPress), bukan untuk analitik data besar.
- Library seperti PyArrow atau Fastparquet memang bisa diinstal di Linux environment, tapi di shared hosting biasanya ada keterbatasan akses root dan resource.
π Perbandingan Lingkungan
| Lingkungan | Cocok untuk Parquet? | Catatan |
|---|---|---|
| Shared Hosting (cPanel, PHP, MySQL) | Tidak optimal | Fokus ke web hosting, database relasional, keterbatasan resource. |
| VPS / Dedicated Server (Linux) | Bisa | Kamu bebas install Python, Spark, Hadoop, PyArrow, dll. |
| Cloud Data Platforms (AWS, GCP, Azure) | Sangat cocok | Native support untuk Parquet, efisiensi tinggi untuk query besar. |
π― Kesimpulan
- Di shared hosting Linux: bisa dipakai kalau sekadar menyimpan/olah file Parquet dengan Python, tapi tidak ideal untuk analitik besar.
- Untuk data besar/kompleks: lebih baik gunakan VPS, server dedicated, atau cloud data warehouse.
- Parquet memang βkuatβ untuk data besar, tapi kekuatannya baru terasa di ekosistem big data, bukan di hosting tradisional.
π Jadi kalau tujuanmu hanya eksperimen kecil (misalnya simpan dataset di Parquet dan baca dengan Pandas), itu bisa dilakukan di shared hosting jika hosting mendukung Python. Tapi kalau tujuannya analitik skala besar, lebih baik pindah ke VPS atau cloud.
Mau saya tunjukkan contoh setup minimal di Linux server (VPS) untuk mulai pakai Parquet dengan Python + PyArrow?
========== contoh query:
import pandas as pd import time
Baca file CSV hanya kolom tertentu
start_csv = time.time() df_csv = pd.read_csv("data.csv", usecols=["nama", "usia"]) end_csv = time.time() print(f"Waktu baca CSV: {end_csv - start_csv:.2f} detik")
Baca file Parquet hanya kolom tertentu
start_parquet = time.time() df_parquet = pd.read_parquet("data.parquet", columns=["nama", "usia"]) end_parquet = time.time() print(f"Waktu baca Parquet: {end_parquet - start_parquet:.2f} detik")