
Polars 2.0-ის წინასწარი გამოშვება: სტრიმინგის ძრავი ნაგულისხმევად
Polars-მა 2.0-ის პირველი კანდიდატი გამოაქვეყნა: LazyFrame-ის ყველა მოთხოვნა სტრიმინგის ძრავზე გადადის, ტიპების დამუშავება მკაცრდება, მოშორებული API-ები კი გასაგებ შეტყობინებებს აბრუნებს.
Polars-ის გუნდმა 2.0 ვერსიის პირველი გამოშვების კანდიდატი გამოაქვეყნა; საბოლოო ვერსია მომდევნო კვირებში გამოვა. ავტორი რიჩი ვინკი ბლოგზე ხაზს უსვამს, რომ მთავარი ვერსიის აწევა ახალ ფუნქციებს არ უკავშირდება, არამედ ძველი საპროექტო გადაწყვეტილებების მოშორებას და ნაგულისხმევი პარამეტრების შეცვლას.
სტრიმინგის ძრავი ნაგულისხმევად
უდიდესი ცვლილება ისაა, რომ ყველა LazyFrame-ის მოთხოვნა ახლა სტრიმინგის ძრავზე სრულდება. collect()-ის გამოძახება მეხსიერების მოხმარებას საგრძნობლად ამცირებს და წარმადობას ზრდის; პროექტის შეფასებით, სტრიმინგის ძრავი მთლიანობაში ადვილად 5-ჯერ უფრო სწრაფია.
სწორედ ამიტომ გახდა საჭირო მთავარი ვერსიის აწევა: სტრიმინგის ძრავი არ იძლევა მწკრივების რიგითობის გარანტიას ისეთი ოპერაციებისთვის, როგორიცაა join, group_by და unpivot. თუ კოდი დამოკიდებულია დაკვირვებად რიგითობაზე, საჭიროა მკაფიო ჩართვა პარამეტრით maintain_order=True; ძველი, მეხსიერებაში მომუშავე ძრავის ნაგულისხმევად დატოვება კი pl.Config.set_engine_affinity-ით შეიძლება.
უფრო მკაცრი და უფრო გასაგები შეცდომები
მეორე ვერსია ამკაცრებს იმ ქცევას, რაც ადრე ჩუმად „ჩავარდნას" იწვევდა. is_in გამოსახულება სხვადასხვა ტიპზე ადრე ორივე მხარეს საერთო ტიპამდე მიჰყავდა მაშინაც, როცა გარდაქმნა მონაცემებს კარგავდა — ბლოგზე მოყვანილია მომხმარებლის ID-ის შედარება 2^53-ზე მეტ მნიშვნელობაზე, სადაც დამრგვალება ცრუ დამთხვევას იძლეოდა; ახლა ასეთი შემთხვევა შეცდომას აღძრავს. ჰორიზონტალური concat ამოწმებს სიგრძეებს და null-ებით აღარ ავსებს — ძველი ქცევა მხოლოდ გამოკვეთილი პარამეტრით horizontal_extend რჩება. რამდენიმე ორაზროვანი cast მოშორებულია სპეციალიზებული მეთოდების სასარგებლოდ, მაგალითად .cat.to() და .str.to_date().
მოშორებული API-ებისთვის დამატებულია ორი ტიპიზებული გამონაკლისი — AttributeRemovedError და ArgumentRemovedError — რომელთა შეტყობინებები ახალ მეთოდს მიუთითებს: melt გახდა unpivot, ხოლო join_nulls გადაერქვა nulls_equal. ავტორი ასევე აღნიშნავს, რომ collect_schema()-ით სქემის ადრეული შემოწმება სასარგებლოა AI-აგენტებისთვის, რადგან ისინი მოთხოვნის სტრუქტურას მონაცემების დამუშავებამდე ამოწმებენ.
რა იგეგმება შემდეგ
2.x, ვინკის თქმით, 1.x-ს გაცილებით გასცდება: სტრიმინგის ძრავისთვის მონაცემების ბირთვგარე დამუშავება, ახალი IO-პლაგინების დიზაინი, გუნდის შეფასებით ყველაზე სწრაფი S3-ის წამკითხველი, SQL-ის ფართო მხარდაჭერა, დანახარჯებზე დაფუძნებული დამგეგმავი, join-ების გადალაგება და mmap-ის მოშორება, რაც პროცესებს სრულად ასინქრონულს გახდის. სრული მიგრაციის გიდი უკვე ხელმისაწვდომია, კანდიდატის დაყენება კი ბრძანებით pip install polars==2.0rc1 ხდება.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.