Polars 2.0: ເປັນຫຍັງການຮ່ວມບໍ່ຮັກສາລຳດັບແຖວອີກຕໍ່ໄປ
Polars 2.0 ໃຊ້ collect ໃນເຄື່ອງຈັກສະຕຣີມມິງໂດຍຄ່າເລີ່ມຕົ້ນ.
Polars 2.0 ໃຊ້ collect ໃນເຄື່ອງຈັກສະຕຣີມມິງໂດຍຄ່າເລີ່ມຕົ້ນ. ສໍາລັບ join, group_by ແລະ unpivot, ລຸ້ນນີ້ບໍ່ຮັບປະກັນລຳດັບແຖວປ້ອນເຂົ້າອີກຕໍ່ໄປ ເວັ້ນເສຍແຕ່ວ່າທ່ານຈະກຳນົດ maintain_order ຫຼື sort ຢ່າງຊັດເຈນ. ໃນການທົດສອບຂອງພວກເຮົາໃນ polars 2.0.0, ການ join ແບບ inner 2,000,000 ແຖວ ໄດ້ສົ່ງຄືນແຖວອອກຈາກລຳດັບປ້ອນເຂົ້າໂດຍຄ່າເລີ່ມຕົ້ນ ແລະ ຮັກສາລຳດັບໄວ້ດ້ວຍ maintain_order. ລຸ້ນນີ້ຍັງເປີດການກ່າຍຂໍ້ມູນນອກຫຼັກ (out-of-core spilling) ແລະ ເຮັດໃຫ້ການອ້າງອີງມາດຕະຖານເປັນຂອງຜູ້ຂາຍເອງ.
ອ່ານສະບັບລາຍລັກອັກສອນ (ພາສາອັງກິດ) ↗
ສິ່ງທີ່ວິດີໂອນີ້ກວມເອົາ
- ການເອີ້ນ collect() ໃນ lazy query ຕອນນີ້ໃຊ້ເຄື່ອງຈັກສະຕຣີມມິງໂດຍຄ່າເລີ່ມຕົ້ນ, ເຊິ່ງບໍ່ຮັບປະກັນລຳດັບແຖວສຳລັບ join, group_by ແລະ unpivot.
- ຄູ່ມືການຍົກລະດັບກ່າວວ່າ ລຳດັບບໍ່ແມ່ນລຳດັບກ່ອນ 2.0 ອີກຕໍ່ໄປ ແລະ ບໍ່ຮັບປະກັນ; ມັນແນະນຳໃຫ້ຈັດລຽງຢ່າງຊັດເຈນ ຖ້າທ່ານອີງໃສ່ມັນ.
- ໃນການທົດສອບຂອງພວກເຮົາ, ການ join ແບບ inner ໂດຍຄ່າເລີ່ມຕົ້ນໄດ້ສົ່ງຄືນຄ່າ False; maintain_order="left_right" ໃນການ join ໄດ້ສົ່ງຄືນຄ່າ True. ເຄື່ອງດຽວ, ການທົດສອບດຽວ, ຮູບແບບການ join ດຽວ.
- ການກ່າຍຂໍ້ມູນນອກຫຼັກ (Out-of-core spilling) ເປີດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ: ມັນເລີ່ມຕົ້ນທີ່ປະມານ 80% ຂອງ RAM, ດ້ວຍງົບປະມານດິສກ໌ເລີ່ມຕົ້ນ 64 GB. ການ join ແລະ group_by ແບບ out-of-core ແມ່ນຢູ່ໃນແຜນງານ.
- collect_schema() ຈັບຄໍລຳທີ່ຂາດຫາຍໄປກ່ອນທີ່ຈະອ່ານຂໍ້ມູນໃດໆ, ແຕ່ການ cast ທີ່ລົ້ມເຫຼວໃນຄ່າດຽວຈະລົ້ມເຫຼວໃນຕອນ collect() ເທົ່ານັ້ນ.
- ການປຽບທຽບ TPC-H ແລະ TPC-DS ແມ່ນການທົດສອບຂອງຜູ້ຂາຍເອງກ່ຽວກັບຂໍ້ມູນທີ່ໄດ້ມາ, ແລະ ໝາຍເຫດກ່າວວ່າຜົນໄດ້ຮັບບໍ່ສາມາດປຽບທຽບກັບມາດຕະຖານທາງການໄດ້.
ບົດບັນທຶກທີ່ແປແລ້ວ
ແປຈາກຄຳບັນຍາຍຕົ້ນສະບັບພາສາອັງກິດ. ສຽງ ແລະ ຄຳບັນຍາຍທີ່ມີໃຫ້ແມ່ນຄວບຄຸມໂດຍ YouTube.
ເປັນຫຍັງຄ່າເລີ່ມຕົ້ນຈຶ່ງປ່ຽນແປງ?
0:00 ທ່ານຄິດວ່າການ join ສົ່ງຄືນແຖວຂອງທ່ານຕາມລຳດັບທີ່ທ່ານຂຽນ. Polars 2.0 ໄດ້ຢຸດເຊົາການສັນຍາແບບນັ້ນ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ໂດຍຕັ້ງໃຈ. ໃນວິດີໂອນີ້: ເປັນຫຍັງຄ່າເລີ່ມຕົ້ນຈຶ່ງປ່ຽນແປງ? ມັນຊື້ຫຍັງ? ແລະ script ໃດຂອງເຈົ້າຈະເສຍກ່ອນ? ນີ້ແມ່ນ The Daily Diff, ເບື້ອງຫຼັງ. Polars ແມ່ນຫ້ອງສະໝຸດ DataFrame ແບບ open-source: ເຄື່ອງຈັກຕາຕະລາງທີ່ທ່ານເອີ້ນຈາກ Python,
0:20 ດ້ວຍແກນຫຼັກທີ່ຂຽນດ້ວຍ Rust. ມັນບໍ່ເສຍຄ່າພາຍໃຕ້ໃບອະນຸຍາດ MIT, ແລະທ່ານຕິດຕັ້ງມັນດ້ວຍ pip install polars. ລາຍລະອຽດໜຶ່ງກ່ອນ. ປຸ່ມທີ່ນໍາລຳດັບເກົ່າກັບມາແມ່ນ argument ຂອງການ join ນັ້ນເອງ. ຂ້ອຍຈະກັບມາເວົ້າເຖິງມັນໃນຕອນທ້າຍ. ຕັ້ງແຕ່ 2.0, collect ໃຊ້ເຄື່ອງຈັກສະຕຣີມມິງໂດຍຄ່າເລີ່ມຕົ້ນ. Streaming ແຍກ query ອອກເປັນສ່ວນໆທີ່ເຮັດວຽກພ້ອມກັນ, ແລະສ່ວນຕ່າງໆຈະສຳເລັດເມື່ອພວກມັນສຳເລັດ.
0:42 ສຳລັບ join, group by ແລະ unpivot, ລຸ້ນນີ້ບໍ່ໄດ້ສັນຍາລຳດັບ. ໃຜຈະຖືກກະທົບກ່ອນ? ໃຜກໍຕາມທີ່ປຽບທຽບຜົນໄດ້ຮັບກັບໄຟລ໌ທີ່ບັນທຶກໄວ້, ແຖວຕໍ່ແຖວ. ການທົດສອບນັ້ນສາມາດຜ່ານໃນ laptop ຂອງທ່ານ ແລະ ລົ້ມເຫຼວໃນເຄື່ອງອື່ນ. ຕໍ່ໄປ, ຄູ່ມືການຍົກລະດັບ.
ຄູ່ມືການຍົກລະດັບສັນຍາຫຍັງ?
0:57 ມັນກ່າວວ່າລຳດັບແຖວທີ່ສະແດງຢູ່ຂ້າງເທິງບໍ່ໄດ້ຮັບປະກັນ. ດັ່ງນັ້ນຖ້າທ່ານອີງໃສ່ລຳດັບ, ຈັດລຽງຢ່າງຊັດເຈນ. Out-of-core ກໍເປີດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນເຊັ່ນກັນ. ມັນເລີ່ມກ່າຍຂໍ້ມູນໄປຫາດິສກ໌ທີ່ປະມານ 80 ສ່ວນຮ້ອຍຂອງ RAM, ດ້ວຍງົບປະມານຫົກສິບສີ່ກິກະໄບ. Sort, window functions ແລະຫຼາຍ expression ສາມາດກ່າຍຂໍ້ມູນໄດ້ຕອນນີ້. Joins ແລະ group-bys ກຳລັງຈະມາ.
ການທົດສອບເປັນການຕໍ່ສູ້ທີ່ຍຸດຕິທຳບໍ?
1:17 Polars ກ່າວວ່າມັນດີກວ່າ DataFusion ແລະ DuckDB ໃນ TPC-H ແລະ TPC-DS ມາດຕະຖານ. ຕົວເລກມາຈາກການທົດສອບຂອງພວກເຂົາເອງ, ກ່ຽວກັບຂໍ້ມູນທີ່ໄດ້ມາ, ແລະໝາຍເຫດຂອງພວກເຂົາກ່າວວ່າພວກມັນບໍ່ສາມາດປຽບທຽບກັບຜົນທາງການໄດ້. ຕົວເລກຂອງພວກເຂົາເອງກ່າວວ່າ Polars ໄວຂຶ້ນປະມານສາມຈຸດແປດເທົ່າຈາກ ສິບຫົກຄໍໄປຫາໜຶ່ງຮ້ອຍເກົ້າສິບສອງ, ໃນ TPC-H. ພວກເຂົາຍັງກ່າວວ່າ thread ເພີ່ມເຕີມຂອງເຄື່ອງໃຫຍ່ເຮັດໃຫ້ query ນ້ອຍໆຊ້າລົງ.
ພວກເຮົາເຫັນຫຍັງເມື່ອພວກເຮົາທົດລອງມັນ?
1:41 ພວກເຮົາໄດ້ທົດສອບການ join ເດີມສອງຄັ້ງໃນ Polars 2.0.0. ການທົດສອບໂດຍຄ່າເລີ່ມຕົ້ນເຮັດໃຫ້ແຖວປົນກັນ. ດ້ວຍ flag, ລຳດັບປ້ອນເຂົ້າຈະຍັງຄົງຢູ່. ຊອກຫາການ join ທີ່ນຳໄປສູ່ການທົດສອບ. ການ join ໃດໆທີ່ບໍ່ມີ sort ຫຼັງຈາກນັ້ນແມ່ນການຕັດສິນໃຈລຳດັບແຖວທີ່ທ່ານບໍ່ເຄີຍເຮັດ. Polars 2.0 ເຂັ້ມງວດຂຶ້ນກ່ຽວກັບປະເພດ.
ເຂັ້ມງວດກວ່າໝາຍເຖິງໄວກວ່າບໍ?
1:58 ການກວດສອບ schema ຈັບຄໍລຳທີ່ຂາດຫາຍໄປກ່ອນທີ່ຈະອ່ານຂໍ້ມູນໃດໆ. ມັນບໍ່ສາມາດຈັບການ cast ທີ່ລົ້ມເຫຼວໃນແຖວດຽວໄດ້, ເພາະວ່າຄວາມຜິດພາດນັ້ນລໍຖ້າ ຂໍ້ມູນ. ຕອນນີ້ loop ທີ່ຂ້ອຍໄດ້ເປີດ.
ຂ້ອຍຈະເອົາລຳດັບເກົ່າຄືນມາໄດ້ແນວໃດ?
2:08 ປຸ່ມຢູ່ທີ່ການ join. ກຳນົດ maintain order ໃນການ join, ຫຼືເພີ່ມ sort ຫຼັງຈາກນັ້ນ. ຄູ່ມືແນະນຳໃຫ້ໃຊ້ sort. join flag ຮັກສາລຳດັບໄວ້ໃນການທົດສອບຂອງພວກເຮົາ, ໂດຍມີລຳດັບຂອງຝ່າຍຊ້າຍຖືກຮັກສາໄວ້ເປັນ ຊ້າຍ, ຂວາ. ຄໍາຕັດສິນ, ເບື້ອງຫຼັງ: NEEDS REVIEW.
ຄຳຕັດສິນແມ່ນຫຍັງ?
2:22 ຂ້ອຍຈະທົບທວນການ join ທຸກຄັ້ງກ່ອນການຍົກລະດັບ. ມີຄໍາຖາມກ່ຽວກັບເລື່ອງນີ້ບໍ? ໃສ່ໄວ້ໃນຄໍາເຫັນ. ແລະນັ້ນຄືຄວາມແຕກຕ່າງສໍາລັບມື້ນີ້. ຂ້ອຍຊື່ Niko ຈາກ Axrisi. Merge ຢ່າງມີຄວາມຮັບຜິດຊອບ.
ແຫຼ່ງຂໍ້ມູນ
- Release of Polars 2.0Polars (pola.rs)
- Polars 2.0 upgrade guidePolars documentation
- Polars homepagePolars (pola.rs)
- polars-2.0-benchmark repositoryPolars on GitHub
- Release of Polars 2.0 (Hacker News discussion)Hacker News



