deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

Polars 2.0 sürüm adayı LazyFrame sorgularını varsayılan olarak streaming'e geçiriyor

Polars 2.0'nın ilk sürüm adayı, LazyFrame sorgularında streaming motorunu varsayılan hale getiriyor, tip işleme kurallarını sıkılaştırıyor ve önümüzdeki haftalarda çıkacak nihai sürüm öncesinde uzun süredir kullanımdan kaldırılan API'leri kaldırıyor.

Polars 2.0 sürüm adayı LazyFrame sorgularını varsayılan olarak streaming'e geçiriyor

İlk sürüm adayı yayımlandı

Polars ekibi, Polars 2.0'nın ilk sürüm adayını yayımladı; nihai sürümün birkaç hafta içinde bekleniyor. Hacker News'in ana sayfasına ulaşan Polars blogundaki duyuruda, geliştiriciler bu sürümü bir özellik vitrini değil, bir temizlik kilometresi olarak tanımlıyor: ana sürüm numarasının artırılmasının asıl nedeni eski tasarım kararlarını emekliye ayırmak ve daha mantıklı varsayılanlara geçmek; ekip çoğu kullanıcı için yükseltmenin sorunsuz geçeceğini öngörüyor.

Streaming varsayılan motor oluyor

En geniş etkili değişiklik, bir LazyFrame üzerinde collect() çağrısının artık sorguları varsayılan olarak streaming motoruna yönlendirmesi ve engine="auto" değerinin streaming'e çözümlenmesi. Duyuruya göre tipik kullanıcılar bellek kullanımında büyük düşüşler ve önemli performans kazanımları görmeli; ekip streaming motorunun genel olarak yaklaşık beş kat daha hızlı olmasını bekliyor.

Bunun ana sürüm artışını gerektirmesinin nedeni davranışsal: streaming motoru, join işlemleri, group_by ve unpivot dahil olmak üzere belirli işlemlerde satır sırasını varsayılan olarak garanti etmiyor. Gözlemlenebilir sıralamaya bağlı sorgular maintain_order ayarıyla bu davranışa geri dönebilir; önceki davranışı isteyen ekipler ise motor eğilimini işlem genelinde in-memory motoruna ayarlayabilir ya da tek bir collect çağrısına engine="in-memory" parametresini geçebilir.

Daha katı tip işleme ve birleştirme

2.0'nın diğer teması ise katılık. Blog yazısında açıklandığı gibi Polars felsefesi, hatayı bir pipeline'ın yirmi dakika çalışıp sonra başarısız olmasına izin vermek yerine mümkün olduğunca erken ortaya çıkarmak ve veri uyumsuzluklarının örtük şekilde işlenmesini, çünkü bu uyumsuzluklar hataları gizleyebildiği için, opsiyonel hale getirmek. Ekip bunu yapay zekâ destekli geliştirmenin yükselişiyle de ilişkilendiriyor: agent'lar bir sorgunun yapısını doğrulamak ve veriyi materialize etmeden şema düzeyindeki sorunları yakalamak için collect_schema() çağırabiliyor; bu da yineleme yaparken daha hızlı geri bildirim sağlıyor.

Somut olarak, is_in ifadeleri artık uyumsuz tipleri ortak bir süpertipe sessizce cast etmiyor. Duyuru, tam sayı kullanıcı ID'lerinin float'a dönüşmüş bir ID listesiyle karşılaştırıldığı, önceki sürümlerde tam sayıların Float64'e zorlandığı bir vakayı öne çıkarıyor; 2^53 ötesindeki tam sayılar float64'ün tam olarak temsil edebileceğini aştığı için, farklı bir ID aşağı yuvarlanarak işaretlenen değere eşit olabiliyor ve yanlış bir eşleşme ortaya çıkabiliyor. Polars 2.0 bunun yerine InvalidOperationError fırlatıyor ve açık bir cast istiyor.

Yatay birleştirme de daha katı: farklı uzunluktaki frame'ler artık kısa olanı null'larla doldurmak yerine ShapeError fırlatıyor; doldurma ise how="horizontal_extend" ile açıkça yapılabiliyor. Bir dizi belirsiz cast de kaldırıldı. Tam sayıların enum veya categorical tiplerine cast edilmesi ve string'lerin date veya datetime tiplerine cast edilmesi artık başarısız oluyor; bunların yerini .cat.to(), .cat.physical() ve .str.to_date() gibi özel metotlar aldı ve string ayrıştırıcıları açık bir format belirtmenize izin veriyor.

Çözüme işaret eden hatalar

Geçişi kolaylaştırmak için Polars 2.0, mesajları kullanıcıları yerine geçen API'ye yönlendiren AttributeRemovedError ve ArgumentRemovedError olmak üzere iki tipli istisna ekliyor. Örneğin kaldırılan melt metodunu çağırmak artık id_vars ve value_vars yerine index ve on parametreleriyle unpivot kullanmanızı söylüyor; kaldırılan join_nulls argümanına ait mesaj ise adının nulls_equal olarak değiştirildiğini belirtiyor. Ekip, kaldırılan işlevselliğin çoğunun uzun süredir kullanımdan kaldırılmış olduğunu hatırlatıyor, kesilen bir şeye bel bağlayan herkesin geri bildirimini davet ediyor ve kalan değişiklikleri kapsayan eksiksiz bir geçiş kılavuzu yayımladı.

Neden önemli

Polars, Python veri ekosisteminde yaygın olarak kullanılan bir dataframe kütüphanesi haline geldi ve 2.0 sürümü mevcut kodun sessizce bel bağlayabileceği davranışları değiştiriyor: join ve group-by sonrası satır sırası, örtük tip zorlaması ve birleştirmede null doldurma. Bunlara bel bağlayan pipeline'lar ya hata verecek ya da daha kötüsü farklı sonuçlarla çalışmaya devam edecek; bu yüzden nihai sürüm çıkmadan önce pip install polars==2.0rc1 ile sürüm adayını test etmek ucuz bir sigorta. Yıkıcı değişikliklerin ötesinde, varsayılan streaming sıradan sorguların erişimine bellekten büyük iş yüklerini taşırıyor; blogda çizilen yol haritası — out-of-core streaming desteği, yeni bir IO eklenti tasarımı, daha hızlı bir S3 okuyucu, genişletilmiş SQL kapsamı, maliyet tabanlı bir planner, join yeniden sıralama ve tamamen asenkron pipeline'lar — projenin bundan sonraki yönünü gözler önüne seriyor.

  • #polars
  • #python
  • #dataframes
  • #breaking-changes
  • #open-source

İlgili yazılar