Rumah > Artikel > pembangunan bahagian belakang > Apakah yang lebih pantas dan lebih murah untuk menukar fail dalam AWS: Polar atau Pandas?
Kedua-duanya menawarkan pelbagai jenis alatan dan kelebihan yang boleh membuatkan kita ragu-ragu yang mana antara keduanya untuk dipilih pada satu ketika. Ia bukan tentang mengubah semua proses syarikat supaya mereka mula menggunakan Polars atau "kematian" kepada Pandas (ini tidak akan berlaku dalam masa terdekat). Ia adalah mengenai mengetahui alatan lain yang boleh membantu kami mengurangkan kos dan masa dalam proses, mendapatkan hasil yang sama atau lebih baik.
Apabila kami menggunakan perkhidmatan awan, kami mengutamakan faktor tertentu, termasuk kosnya. Perkhidmatan yang saya gunakan untuk proses ini ialah AWS Lambda dengan masa jalan Python 3.10 dan S3 untuk menyimpan fail mentah dan fail yang ditukar parket.
Niatnya adalah untuk mendapatkan fail CSV sebagai data mentah dan memprosesnya dengan panda dan kutub dengan tujuan untuk mengesahkan mana antara dua perpustakaan ini yang menawarkan kami pengoptimuman sumber yang lebih baik seperti memori dan berat fail yang terhasil.
Panda
Ia ialah perpustakaan Python khusus dalam manipulasi dan analisis data, ia ditulis dalam C dan keluaran awalnya adalah pada tahun 2008.
*Kutub *
Ia ialah perpustakaan Python dan Rust khusus dalam manipulasi dan analisis data yang membenarkan proses selari dan kebanyakannya ditulis dalam Rust dan dikeluarkan pada tahun 2022.
Seni bina proses:
Projek ini adalah sesuatu yang mudah seperti yang ditunjukkan dalam seni bina: Pengguna mendepositkan fail CSV dalam kerja/panda atau kerja/porlas dan secara automatik memulakan pencetus s3 untuk memproses fail untuk menukarnya kepada parket dan mendepositkannya dalam proses.
Dalam projek kecil ini saya menggunakan dua lambda dengan konfigurasi berikut:
Memori: 2 GB
Memori fana: 2 GB
Masa hayat: 600 saat
Keperluan
Lambda dengan panda: Panda, Numpy dan Pyarrow
Lambda dengan kutub: Kutub
Dataset data yang digunakan untuk perbandingan tersedia pada kaggle di bawah nama "Ulasan Filem Rotten Tomatoes - 1.44M baris" atau boleh dimuat turun dari sini.
Repositori penuh tersedia di GitHub dan boleh diklon di sini.
Saiz atau Berat
Lambda yang Pandas gunakan memerlukan dua lagi pemalam untuk mencipta fail parket, dalam kes ini ia ialah PyArrow dan versi numpy khusus untuk versi Pandas yang saya gunakan. Hasilnya, kami memperoleh lambda dengan berat atau saiz 74.4 MB, sesuatu yang sangat hampir dengan had yang dibenarkan oleh AWS kepada kami untuk berat lambda.
Lambda dengan Polars tidak memerlukan pemalam lain seperti PyArrow yang memudahkan kehidupan dan mengurangkan saiz lambda kepada kurang daripada separuh. Akibatnya, lambda kami mempunyai berat atau saiz 30.6 MB berbanding yang pertama, memberikan kami ruang untuk memasang kebergantungan lain yang mungkin kami perlukan untuk proses transformasi kami.
Prestasi
Lambda dengan Pandas telah dioptimumkan untuk menggunakan pemampatan selepas versi pertama, walau bagaimanapun, tingkah lakunya turut dianalisis.
Panda
Ia mengambil masa 18 saat untuk memproses set data dan menggunakan memori 1894 MB untuk memproses fail CSV dan menjana fail Parket berbanding versi lain, ia adalah yang paling banyak menggunakan masa dan sumber.
Panda + Mampatan
Menambah barisan kod membolehkan kami menambah baik sedikit berbanding versi sebelumnya (Panda), ia mengambil masa 17 saat untuk memproses set data dan menggunakan 1837 MB, yang tidak mewakili peningkatan ketara dalam masa pemprosesan dan pengiraan, tetapi dalam saiz. daripada fail yang terhasil.
Kutub
Ia mengambil masa 12 saat untuk memproses set data yang sama dan saya hanya menggunakan 1462 MB, berbanding dua sebelumnya, ia mewakili penjimatan masa sebanyak 44.44% dan penggunaan memori yang lebih rendah.
Saiz fail output
Panda
Lambda di mana proses mampatan tidak ditubuhkan menghasilkan fail parket 177.4 MB.
Panda + Mampatan
Apabila mengkonfigurasi pemampatan dalam lambda saya tidak menjana fail parket 121.1 MB. Satu baris atau pilihan kecil membantu kami mengurangkan saiz fail sebanyak 31.74%. Memandangkan ia bukan perubahan kod yang ketara, ia merupakan pilihan yang sangat baik.
Kutub
Polar menghasilkan fail 105.8 MB yang, dibeli dengan versi pertama Panda, mewakili penjimatan 40.36% dan 12.63% berbanding versi Pandas dengan pemampatan.
Kesimpulan
Tidak perlu mengubah semua proses dalaman yang menggunakan Panda supaya mereka kini menggunakan Polars, bagaimanapun, adalah penting untuk mempertimbangkan bahawa jika kita bercakap tentang beribu-ribu atau berjuta-juta pelaksanaan lambda, menggunakan Polars akan membantu kita bukan sahaja dengan penggunaan. masa tetapi juga akan membantu kami mendapat kos yang lebih rendah disebabkan pengecasan berasaskan masa yang AWS buat untuk perkhidmatan Tanpa Pelayan seperti Lambda.
Begitu juga, apabila kami menterjemahkan 40.36% itu kepada berjuta-juta fail, kami bercakap tentang GB atau TB, sesuatu yang akan memberi kesan ketara dalam rumah Datalake atau Perisian Data malah dalam storan fail sejuk.
Pengurangan dengan Polar bukan sahaja terhad kepada dua faktor ini, kerana ia akan memberi kesan besar kepada output data dan/atau objek daripada AWS kerana ia adalah perkhidmatan yang mempunyai kos.
Atas ialah kandungan terperinci Apakah yang lebih pantas dan lebih murah untuk menukar fail dalam AWS: Polar atau Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!