Apache Sparkチームは、Pandas APIを製品の最新の3.2リリースに統合した。この変更で、PySpark実行エンジンを使って、データフレーム処理を単一のマシン内の複数のクラスタまたは複数のプロセッサーに拡張できる。
Pythonで多次元(NumPy配列など)および表形式(Pandasデータフレームなど)データの変換と分析を加速することは、多くの進行中のプロジェクトで急成長している分野だ。スケーリングの問題を解決するための主要な戦略が2つある。1つはGPUの並列化機能(配列にはCuPy、データフレームにはRapids CuDFなど)を活用すること、もう一つは複数のプロセッサ(Spark、Dask、Rayなど)を使うことだ。
CPUノードを使って大量のデータを分散して処理することで、使用可能なメモリの制限があり比較的高い価格のGPUと比較して、分析目的の経済的なソリューションが可能となる。Apache Sparkは、複数のクラスタを活用する最も人気のあるエンジンの1つだ。Project Zenで、よりPythonicとなり、Pythonデータサイエンスエコシステムをより多くカバーすることを目指している。Pandas互換のAPIの開発は、このイニシアチブの重要な部分であった。Pandas APIを公開するための同様の取り組みは、Ray/DaskベースのModinやApache ArrowベースのVaexなどの代替分散コンピューティングライブラリでも見られる。
元のPandasライブラリは、スケーリングを最適化するようには設計されていない。作成者が述べたように、メモリマップドデータストレージオプションなど、いくつかの考慮事項が残されていた。それでも、Pandasは、Python数値計算エコシステム内のStack Overflow Developer Survey(2021)で2番目に愛好者が多いライブラリである。これは、表形式のデータ処理APIの採用が拡大しつつある中で、なぜの標準化がPandasによって主導される可能性があるかを示している。
図-1: Pandas APIが追加されたPySparkコンポーネントの概要
APIの開発は、別のKoalasプロジェクトで数年間進行中である。Koalasは、PySparkデータフレーム上のAPIブリッジとして設計されている。Pandas命令をSpark SQLプランに変換することで同じ実行エンジンを利用している(図-1)。KoalasをメインのPySparkコードベースにマージすることで、プロジェクトは、既存のPandasコードのSparkクラスタへのよりシンプルな移植と、PySparkとPandas API間の迅速な移行をターゲットとしている。
次のリリースで、SparkチームはパンダAPIの現在の83%のカバレッジを90%にし、コードベースに型アノテーションを増やし、APIのパフォーマンスと安定性をさらに向上させることを目指している。