Super Sale WeekClaude Skills — 20% OFF
Glossary

Menguasai File Parquet: Struktur, Kasus Penggunaan, dan Keunggulan Utama

Powerdrill Bloom·
Menguasai File Parquet: Struktur, Kasus Penggunaan, dan Keunggulan Utama

File Parquet menyimpan data berdasarkan kolom, bukan baris. Proyek Apache Parquet mendeskripsikannya sebagai "format file data berorientasi kolom sumber terbuka yang dirancang untuk penyimpanan dan pengambilan data yang efisien." Satu pilihan desain itulah yang menjelaskan mengapa file ini berukuran lebih kecil, lebih cepat untuk dikueri, dan lebih sulit dibuka dengan klik ganda.

Apa itu file Parquet?

Parquet adalah format file untuk data tabular, yang dikelola sebagai proyek Apache. Dokumentasi resminya menyatakan bahwa format ini "menyediakan skema kompresi dan pengodean berkinerja tinggi untuk menangani data kompleks dalam jumlah besar." Dokumentasi tersebut menambahkan bahwa format ini "didukung di banyak bahasa pemrograman dan alat analitik."

Sifat penentunya adalah orientasi. Sebuah CSV menulis satu baris sekaligus: setiap bidang dari baris pertama, lalu setiap bidang dari baris kedua. Parquet menulis satu kolom sekaligus: setiap nilai dari kolom pertama, lalu setiap nilai dari kolom kedua.

Hal itu terdengar seperti masalah teknis belaka. Namun, konsekuensinya sangat besar. Nilai-nilai dalam satu kolom cenderung mirip satu sama lain, sehingga membuatnya jauh lebih mudah dikompresi daripada baris yang berisi data campuran. Selain itu, kueri yang hanya membutuhkan tiga kolom dari total sembilan puluh kolom cukup membaca tiga kolom tersebut saja, alih-alih memindai setiap baris hanya untuk membuang sebagian besar datanya.

Format ini dispesifikasikan secara formal. Dokumentasi Apache mencatat bahwa "repositori parquet-format menampung spesifikasi resmi dari format file Parquet, yang mendefinisikan bagaimana data distrukturkan dan disimpan."

Bagaimana struktur file Parquet

Amplop

Setiap file Parquet dibuka dan ditutup dengan empat bita yang sama. Spesifikasinya menunjukkan "magic number 4-bita 'PAR1'" di bagian awal, dan magic number yang sama di bagian paling akhir.

Di antara keduanya terdapat data dan, di dekat bagian akhir, metadata. Tepat sebelum magic number penutup, terdapat "panjang metadata file dalam bita sebesar 4-bita (little endian)." Nilai tersebut memberi tahu pembaca seberapa jauh harus melompat mundur untuk menemukan blok metadata.

Grup baris dan chunk kolom

Di dalam amplop tersebut, data dibagi menjadi dua bagian. Spesifikasinya mendeskripsikan file dengan "N kolom dalam tabel ini, yang dibagi menjadi M grup baris."

Grup baris adalah irisan horizontal — sekumpulan baris. Di dalam setiap grup baris, nilai dari setiap kolom disimpan bersama sebagai chunk kolom. Jadi, file dengan 90 kolom dan 10 grup baris menampung 900 chunk kolom, yang masing-masing merupakan rangkaian nilai berurutan dari satu kolom saja.

Pembagian ganda inilah yang memungkinkan pembacaan selektif. Kueri dapat melewati seluruh grup baris yang tidak mungkin berisi baris yang cocok, lalu hanya membaca chunk kolom yang dibutuhkannya dari grup baris yang tersisa.

Mengapa metadata berada di bagian akhir

Hal ini mengejutkan orang-orang yang mengharapkan adanya header di awal. Dokumentasi Apache menjelaskan alasannya secara langsung: "metadata file ditulis setelah data untuk memungkinkan penulisan satu kali jalan."

Sistem penulis (writer) yang mengalirkan dataset besar tidak mengetahui posisi bita akhir dari setiap chunk sampai selesai menulisnya. Menempatkan metadata di akhir berarti sistem tidak perlu kembali ke awal untuk memperbaiki header.

Pola pembacaan mengikuti prinsip ini. Menurut dokumentasi, metadata file "berisi lokasi dari semua titik awal chunk kolom." Dokumentasi tersebut menambahkan bahwa "pembaca diharapkan untuk membaca metadata file terlebih dahulu untuk menemukan semua chunk kolom yang mereka butuhkan."

Kegunaan Parquet

Anda biasanya akan menemui file .parquet dalam salah satu dari empat situasi berikut.

Ekspor data warehouse. Ketika seseorang mengekspor tabel besar dari warehouse modern, format ini sering kali menjadi pilihan default karena ukuran filenya tetap mudah dikelola.

Penyimpanan data lake. File yang berada di penyimpanan objek cloud umumnya menggunakan format ini, justru karena mesin kueri dapat membaca sebagian kolom tanpa harus mengunduh semuanya.

Serah terima antar-tim. Seorang data engineer yang mengirimi Anda data transaksi selama setahun sering kali akan memilih format ini daripada CSV yang ukurannya bisa beberapa kali lipat lebih besar.

Pertukaran alat analitik. Karena format ini didukung di berbagai bahasa pemrograman dan alat, data dapat berpindah antar-sistem tanpa memerlukan langkah konversi di tengahnya.

Benang merahnya adalah ukuran. Format ini menjadi pilihan yang jelas ketika file CSV sudah terlalu besar dan tidak nyaman lagi untuk dipindahkan.

Parquet vs CSV

Parquet CSV
Orientasi Berorientasi kolom Berorientasi baris
Dapat dibaca di editor teks Tidak, ini adalah biner Ya
Ukuran file tipikal Lebih kecil, melalui kompresi kolom Lebih besar untuk data yang sama
Membaca beberapa kolom Hanya membaca chunk kolom tersebut Membaca seluruh file
Tipe data Disimpan dalam metadata file Disimpulkan oleh aplikasi apa pun yang membukanya
Dapat dibuka dengan klik ganda Umumnya tidak Biasanya terbuka di aplikasi spreadsheet
Paling cocok untuk Tabel besar, kueri berulang Tabel kecil, pemeriksaan cepat, pembagian universal

Perilaku tipe data ini patut diperhatikan. CSV tidak tahu apakah 00123 adalah angka atau string, itulah sebabnya angka nol di depan dan tanggal sering kali rusak saat diimpor. Parquet mencatat tipe data dalam metadatanya, sehingga nilai yang Anda tulis adalah nilai yang sama dengan yang Anda baca kembali.

Untuk sisi berorientasi baris dari perbandingan ini, panduan CSV membahas hal yang sama dari sudut pandang sebaliknya. analisis TSV membahas varian yang dipisahkan oleh tab.

Keunggulan utama

Kompresi yang benar-benar berlipat ganda. Menyimpan nilai yang mirip secara berdampingan memberikan lebih banyak ruang bagi enkoder untuk bekerja. Dokumentasi Apache mengaitkan hal ini dengan "skema kompresi dan pengodean berkinerja tinggi."

Pemangkasan kolom. Membaca tiga dari sembilan puluh kolom hanya memakan biaya I/O sekitar tiga kolom, bukan sembilan puluh kolom.

Pelewatan grup baris. Karena metadata mencatat apa saja yang ada di setiap grup baris, pembaca dapat mengabaikan seluruh bagian sebelum menyentuhnya.

Tipe data tetap terjaga. Tanggal tetap menjadi tanggal dan pengidentifikasi tetap mempertahankan angka nol di depannya, karena skema data ikut terbawa di dalam file.

Penulisan satu kali jalan. Metadata di bagian akhir berarti file yang sangat besar dapat ditulis sebagai aliran data (stream).

Dukungan yang luas. Dokumentasi mencatat adanya dukungan di "banyak bahasa pemrograman dan alat analitik," sehingga format ini jarang sekali menemui jalan buntu.

Di mana Parquet tidak lagi membantu

Parquet memecahkan masalah penyimpanan dan pengambilan data. Namun, format ini tidak menjawab pertanyaan apa pun yang Anda miliki tentang apa yang sebenarnya ada di dalam file tersebut.

Format ini berbentuk biner, sehingga Anda tidak bisa melihat isinya sekilas. Membuka CSV untuk memeriksa apakah kolom pendapatan adalah bruto atau neto hanya membutuhkan waktu lima detik. File biner memerlukan alat bantu sebelum Anda dapat melihat apa pun di dalamnya.

Format ini juga kurang cocok untuk data berukuran kecil. Untuk tabel pencarian (lookup table) berisi 200 baris, beban overhead metadata dan kebutuhan alat bantu akan melebihi manfaat kompresi apa pun. CSV adalah format yang lebih baik untuk kasus tersebut, dan bersikap jujur tentang hal itu adalah bagian dari penggunaan Parquet secara bijak.

Dan format ini tidak menjamin kualitas data. File tersebut bisa saja membawa data tidak masuk akal yang bertipe data sempurna dan terkompresi dengan efisien. Rekor duplikat, kolom mata uang yang mencampur dua mata uang berbeda, atau ID pelanggan yang skemanya berubah di bulan Maret. Format ini menjamin ketepatan penyimpanan, bukan kebenaran data.

Cara bekerja dengan file Parquet jika Anda bukan seorang engineer

Ini adalah kesenjangan praktisnya. Sebagian besar alat bisnis mengasumsikan penggunaan spreadsheet, dan file .parquet tidak akan terbuka dengan cara yang sama seperti CSV.

Langkah yang pragmatis adalah melakukan konversi. Mintalah kepada siapa pun yang membuat file tersebut untuk mengekstrak kolom yang benar-benar Anda butuhkan ke dalam format CSV atau Excel, atau konversikan sendiri menggunakan alat apa pun yang mendukung Parquet. Anda akan kehilangan manfaat kompresi, tetapi hal itu tidak masalah setelah data berada di komputer Anda dan cakupannya sudah diperkecil.

Dari sana, pekerjaannya adalah analisis biasa. Halaman harga Powerdrill Bloom mencantumkan unggahan untuk Excel, CSV, PDF, dan dokumen, sehingga ekstrak yang telah dikonversi dapat langsung dimasukkan. Pertanyaan diajukan dalam bahasa sehari-hari, bukan ditulis sebagai kueri. Asisten AI CSV mencakup jalur tersebut, dan konektor data mencakup kasus-kasus di mana data lebih baik ditarik secara langsung daripada diekspor.

Perbedaan yang perlu diingat adalah bahwa Parquet merupakan keputusan penyimpanan yang dibuat di hulu sebelum sampai ke Anda. Ini bukan alat analisis, dan mengonversinya setelah file sampai di meja Anda adalah hal yang normal, bukan sekadar solusi sementara.

Kesimpulan

Parquet adalah penyimpanan berorientasi kolom dengan skema dan indeksnya berada di bagian akhir file. Desain tersebut menghasilkan kompresi, pembacaan selektif, dan tipe data yang andal, itulah sebabnya format ini menjadi pilihan default untuk data berukuran besar.

Namun, format ini tidak memberikan visibilitas langsung. Begitu file sampai ke tangan seseorang yang membutuhkan jawaban alih-alih penyimpanan, langkah selanjutnya yang berguna biasanya adalah mengekstrak data sesuai kebutuhan dan mengajukan pertanyaan.

Jika Anda berada dalam situasi tersebut, coba Powerdrill Bloom dengan file yang telah dikonversi dan mulailah dengan mengubahnya menjadi grafik.

Pertanyaan yang sering diajukan

Untuk apa file Parquet digunakan?

Parquet digunakan untuk menyimpan dataset tabular besar secara efisien. Format ini umum digunakan untuk ekspor data warehouse, penyimpanan data lake, serah terima antar-tim, dan pertukaran antar-alat analitik. Alasannya adalah karena format ini dapat dikompresi dengan baik dan mendukung pembacaan kolom tertentu saja.

Apakah Parquet lebih baik daripada CSV?

Untuk tabel besar yang dikueri berulang kali, ya: ukurannya lebih kecil, membawa tipe data, dan mendukung pemangkasan kolom. Untuk tabel kecil yang perlu Anda periksa atau bagikan secara luas, CSV lebih mudah karena berupa teks dan dapat dibuka di mana saja.

Apakah saya bisa membuka file Parquet di Excel?

Tidak bisa dengan mengekliknya dua kali, karena Parquet adalah format biner, bukan teks. Pendekatan yang umum dilakukan adalah mengonversinya ke CSV atau Excel terlebih dahulu, atau menggunakan alat yang dapat membaca Parquet secara langsung.

Mengapa metadata Parquet disimpan di bagian akhir file?

Dokumentasi Apache menjelaskan bahwa metadata ditulis setelah data "untuk memungkinkan penulisan satu kali jalan." Sistem penulis yang mengalirkan dataset besar tidak mengetahui posisi chunk akhir sebelumnya, sehingga menulis metadata di bagian akhir menghindari keharusan untuk kembali ke bagian header.

Apa yang dimaksud dengan grup baris dalam Parquet?

Grup baris adalah irisan horizontal dari tabel. Spesifikasinya mendeskripsikan kolom file sebagai "dibagi menjadi M grup baris," dengan setiap kolom disimpan sebagai chunk terpisah di dalam setiap grup. Tata letak tersebut memungkinkan pembaca untuk melewati grup dan kolom yang tidak mereka butuhkan.