どちらも幅広いツールと利点を提供するため、ある時点で 2 つのうちのどちらを選択するか迷ってしまうかもしれません。それは、会社のすべてのプロセスを変更して、Polars を使い始めたり、Pandas を「廃止」したりすることではありません (これはすぐには起こらないでしょう)。それは、プロセスのコストと時間を削減し、同等以上の結果を得るのに役立つ他のツールを知ることです。
クラウド サービスを使用する場合、コストなどの特定の要素を優先します。このプロセスに使用するサービスは、Python 3.10 ランタイムを備えた AWS Lambda と、生のファイルと寄木細工の変換されたファイルを保存するための S3 です。
その目的は、CSV ファイルを生データとして取得し、pandas と Polar で処理して、これら 2 つのライブラリのどちらがメモリなどのリソースや結果として得られるファイルの重みをより適切に最適化できるかを検証することです。
パンダ
これはデータ操作と分析に特化した Python ライブラリであり、C で書かれており、最初のリリースは 2008 年でした。
*極地 *
これは、並列処理を可能にするデータ操作と分析に特化した Python と Rust ライブラリで、主に Rust で書かれており、2022 年にリリースされました。
プロセスのアーキテクチャ:
アーキテクチャに示されているように、プロジェクトはいくぶん単純です。ユーザーは CSV ファイルを work/pandas または work/porlas にデポジットし、s3 トリガーを自動的に開始してファイルを処理し、それを寄木細工に変換して処理済みにデポジットします。
この小さなプロジェクトでは、次の構成で 2 つのラムダを使用します:
メモリ: 2 GB
一時メモリ: 2 GB
存続時間: 600 秒
要件
ラムダとパンダ: パンダ、Numpy、Pyarrow
極を含むラムダ: 極
比較に使用したデータセットは、kaggle で「Rotten Tomatoes Movie Reviews – 144M rows」という名前で入手できるか、ここからダウンロードできます。
完全なリポジトリは GitHub で入手でき、ここで複製できます。
サイズまたは重量
Pandas が使用するラムダには、寄木細工ファイルを作成するためにさらに 2 つのプラグインが必要です。この場合、それは PyArrow と、私が使用していた Pandas のバージョンの特定のバージョンの numpy です。その結果、74.4 MB の重さまたはサイズのラムダを取得しました。これは、AWS がラムダの重さに関して許可する制限に非常に近い値です。
Polars を使用したラムダは、PyArrow のような別のプラグインを必要としないため、作業が簡素化され、ラムダのサイズが半分以下に縮小されます。その結果、ラムダの重みまたはサイズは最初のものと比較して 30.6 MB になり、変換プロセスに必要な他の依存関係をインストールする余地が与えられました。
パフォーマンス
Pandas を使用したラムダは、最初のバージョン以降、圧縮を使用するように最適化されましたが、その動作も分析されました。
パンダ
他のバージョンと比較して、データセットの処理に 18 秒かかり、CSV ファイルの処理と Parquet ファイルの生成に 1894 MB のメモリを使用しました。これは、最も時間とリソースを使用したバージョンでした。
パンダ圧縮
コード行を追加することで、以前のバージョン (Pandas) と比較して少し改善できました。データセットの処理に 17 秒かかり、1,837 MB を使用しました。これは、処理時間と計算時間の大幅な改善ではなく、サイズの改善を示しています。結果のファイルの。
極地
同じデータセットの処理に 12 秒かかり、使用したのは 1462 MB だけでした。前の 2 つと比較すると、時間は 44.44% 節約され、メモリ消費量も少なくなりました。
出力ファイルサイズ
パンダ
圧縮プロセスが確立されていないラムダは、177.4 MB の寄木細工のファイルを生成しました。
パンダ圧縮
ラムダで圧縮を構成する場合、121.1 MB の寄木細工のファイルは生成されません。 1 つの小さな行またはオプションにより、ファイル サイズが 31.74% 削減されました。大幅なコード変更ではないことを考慮すると、これは非常に良いオプションです。
極地
Polars は、Pandas の最初のバージョンと一緒に購入した 105.8 MB ファイルを生成しました。これは、圧縮された Pandas バージョンと比較して 40.36% および 12.63% の節約に相当します。
結論
Pandas を使用するすべての内部プロセスを、Polars を使用するように変更する必要はありませんが、数千または数百万のラムダ実行について話している場合、Polars の使用はデプロイメントだけでなく役立つことを考慮することが重要です。しかし、AWS が Lambda などのサーバーレス サービスに対して時間ベースの課金を行うため、コストの削減にも役立ちます。
同様に、その 40.36% を数百万のファイルに換算すると、GB または TB のことになります。これは、Datalake または Dataware ハウス内、さらにはコールド ファイル ストレージ内でさえ重大な影響を与えるものです。
Polars による削減は、これら 2 つの要素に限定されるものではありません。AWS はコストがかかるサービスであるため、AWS からのデータやオブジェクトの出力に大きな影響を与えるからです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3