湖仓与存储🔥9.0

Polars 2.0:为什么join不再保持行序

原标题: Polars 2.0:为什么join不再保持行序

DevToData·2026/10/8 06:40:40🔗 原文

📋总体概括

Polars 2.0(2026年10月6日发布)将collect()默认切换到流式执行引擎,并默认开启out-of-core处理,内存占用约80%时开始向磁盘溢写。代价是join、group_by、unpivot等操作不再默认保证输入行序,除非显式设置maintain_order参数。这意味着大量隐式依赖行序的下游管线——逐行对比输出、按位置读写文件——可能在不同机器上产生不同结果。这是一次以确定性换取性能与扩展性的重大默认值变更,对所有Polars用户的升级都是一次隐性风险测试。

⚡关键信息

  • ▸Polars 2.0于2026年10月6日发布,collect()默认运行流式引擎而非内存引擎
  • ▸join、group_by、unpivot不再默认保证输入行序,需显式设置maintain_order参数
  • ▸out-of-core处理默认开启,内存占用约80%时开始向磁盘溢写数据
  • ▸隐式依赖行序的管线,如逐行对比或按位置读写文件,可能在不同机器上得到不同结果

🔥犀利点评

这不是bug,是一次堂堂正正的破坏性变更,但社区感知远低于实际影响。行序从来不是join的语义契约,只是所有人都在白嫖实现细节——从内存引擎到流式引擎,白嫖终结了。真正该批评的是:无数测试用assert_frame_equal按行比对,上线后才会发现同一份数据在两台机器上产出不同文件。升级Polars 2.0的正确姿势是先审计所有下游的顺序依赖,而不是看完release note点个赞。

本文由本站自动聚合,以下为原始来源:前往 DevToData 阅读全文 →