Format file Apache Parquet menemukan dirinya terjebak di antara dua dunia. Meskipun Version 2 telah diselesaikan selama bertahun-tahun dan menawarkan peningkatan performa yang jelas, komunitas data engineering sebagian besar masih terjebak pada Version 1 karena kekhawatiran kompatibilitas dan fragmentasi ekosistem.
Manfaat Performa Nyata Namun Sederhana
Pengujian pada dua dataset utama mengungkapkan bahwa Parquet Version 2 memberikan peningkatan yang konsisten dibandingkan pendahulunya. Ukuran file menyusut 2-37% tergantung pada metode kompresi, dengan file yang tidak dikompresi mengalami peningkatan terbesar. Performa penulisan meningkat 4-27%, sementara operasi pembacaan menjadi 1-19% lebih cepat. Peningkatan paling terasa pada dataset yang mengandung banyak nilai numerik, di mana encoding baru dapat bekerja lebih efektif.
Peningkatan ini berasal dari encoding data yang lebih baik sebelum kompresi dilakukan. Version 2 mencakup metode encoding baru seperti RLE_DICTIONARY dan DELTA_BYTE_ARRAY yang memampatkan data lebih efisien. Hal ini mengurangi beban kerja untuk algoritma kompresi tradisional, menjelaskan mengapa file yang tidak dikompresi mengalami peningkatan relatif terbesar.
Peningkatan Performa Parquet Version 2
Pengurangan Ukuran File (Dataset Pemerintah Italia):
- UNCOMPRESSED: 37% lebih kecil
- SNAPPY: 10% lebih kecil
- GZIP: 5% lebih kecil
- ZSTD: 2% lebih kecil
- LZ4_RAW: 8% lebih kecil
- LZO: 9% lebih kecil
Peningkatan Performa Penulisan (Dataset New York Taxi):
- UNCOMPRESSED: 13% lebih cepat
- SNAPPY: 10% lebih cepat
- GZIP: 27% lebih cepat
- ZSTD: 11% lebih cepat
- LZ4_RAW: 11% lebih cepat
- LZO: 9% lebih cepat
Peningkatan Performa Pembacaan (Dataset New York Taxi):
- UNCOMPRESSED: 12% lebih cepat
- SNAPPY: 15% lebih cepat
- GZIP: 16% lebih cepat
- ZSTD: 18% lebih cepat
- LZ4_RAW: 19% lebih cepat
- LZO: 18% lebih cepat
Kompleksitas Implementasi Memicu Kekhawatiran Developer
Implementasi referensi Java telah mendapat kritik dari developer yang bekerja dengan format ini. Implementasi bit-packing saja menghasilkan 74.000 baris kode Java untuk menangani setiap kombinasi bit width, endianness, dan panjang nilai. Pendekatan ini mengutamakan performa daripada maintainability dan menciptakan tantangan bagi developer yang mencoba mengimplementasikan dukungan Parquet dalam bahasa lain atau pada perangkat keras berbeda seperti GPU.
Kompleksitas meluas melampaui sekadar kode. Kesenjangan dokumentasi membuat implementer baru kesulitan memahami layout file dengan benar. Bahkan detail dasar seperti bagaimana page header disertakan dalam perhitungan ukuran terkompresi memerlukan penggalian melalui hex dump daripada dokumen spesifikasi yang jelas.
Perdebatan Standar Empat Tahun Menghambat Kemajuan
Yang mungkin paling mengkhawatirkan adalah ketidaksepakatan berkelanjutan tentang apa yang merupakan fungsionalitas inti Version 2. Sebuah pull request yang membahas masalah ini telah terbuka selama empat tahun tanpa resolusi. Perdebatan berpusat pada apakah peningkatan encoding dan perubahan struktur page harus diperlakukan sebagai fitur terpisah yang berkembang secara independen daripada upgrade versi monolitik.
Kelumpuhan standar ini menciptakan masalah ayam dan telur. Query engine seperti yang ada di platform data utama tidak akan sepenuhnya mendukung Version 2 tanpa persyaratan kompatibilitas yang jelas. Sementara itu, developer tool menghindari adopsi fitur Version 2 karena mereka tidak dapat menjamin kompatibilitas dengan sistem downstream yang masih mengharapkan file Version 1.
Kehati-hatian Enterprise Memperkuat Status Quo
Tantangan kompatibilitas memperkuat mengapa enterprise sering berpegang pada solusi komersial yang sudah mapan meskipun memiliki keterbatasan teknis. Di industri di mana ketidaktersediaan data dapat mengakhiri karier, peningkatan performa sederhana dari Version 2 tidak membenarkan risiko kegagalan integrasi dengan sistem pihak ketiga yang masih mengharapkan file Version 1.
Masalah seperti ini adalah mengapa pemerintah dan enterprise masih berjalan pada Oracle dan SQL Server... Email CYA itu, dan tenggorokan yang bisa dicekik, adalah mengapa Oracle melakukan kesepakatan lisensi 7 dan 8 digit dengan enterprise yang menjual solusi perangkat lunak inferior versus opsi open source.
Pendekatan konservatif ini berarti bahwa meskipun komponen individual dari ekosistem data menambahkan dukungan Version 2, adopsi tetap terbatas oleh mata rantai terlemah dalam toolchain setiap organisasi.
Jalan ke Depan Memerlukan Koordinasi
Untuk organisasi dengan kontrol penuh atas pipeline data mereka, adopsi Version 2 masuk akal hari ini. Peningkatan performa, meskipun tidak dramatis, konsisten dan tidak memiliki kelemahan ketika kompatibilitas bukan menjadi perhatian. Namun, adopsi ekosistem yang lebih luas akan memerlukan koordinasi antara query engine utama, format data lake seperti Iceberg dan Delta Lake , dan library populer seperti Pandas .
Pengalaman komunitas Parquet mencerminkan tantangan yang dihadapi oleh standar lain yang berkembang. Kisah sukses seperti Linux menunjukkan bahwa kepemimpinan teknis yang kuat dapat mencegah jenis keragu-raguan berkepanjangan yang telah memperlambat adopsi Parquet Version 2 . Sampai kejelasan serupa muncul seputar evolusi Parquet , format ini akan terus melayani komunitas data engineering dengan baik, meskipun tidak pada potensi penuhnya.
Referensi: The two versions of Parquet