サンプルを通じたPandasとPySparkデータフレームの比較
Pandasとは?
Pandasは分析のために構造化表データを取り扱うために最も使用されているオープンソースのPythonライブラリの一つです。Pandasライブラリは、データ分析、機械学習、データサイエンスプロジェクトなどで多く使われています。
Pandasは、CSV、JSON、SQLなどのフォーマットからデータをロードすることができ、(SQLテーブルと同じように)行と列を含む構造化オブジェクトであるデータフレームを作成します。
分散処理をサポートしていないので、増大するデータをサポートするために追加の馬力を必要とした際には、常にリソースを追加する必要があります。
Pandasデータフレームは可変であり、遅延評価されず、デフォルトで統計関数がそれぞれのカラムに適用されます。pandasに関しては、pandas DataFrame Tutorial For Beginners Guideで学習することができます。
PySparkとは?
とても簡単に言うと、Pandasはシングルマシンでオペレーションを実行し、PySparkは複数台のマシンで処理を実行します。より大きなデータセットを取り扱う機械学習アプリケーションに取り組んでいるのであれば、Pandasよりもはるかに高速(100倍)オペレーションを実行できるPySparkが最適です。
PySparkは、NumPyを含み多くのデータサイエンスライブラリがPytohnで記述されていることから、PySparkはデータサイエンス、機械学習コミュニティで広く利用されています。また、Tensorflowも大規模データセットを効率的に処理できることから利用されています。PySparkはWalmart、Trivago、Sanofi、Runtasticなどの多くの企業で活用されています。
PySparkは、Apache Sparkの機能を用いてPythonを実行するための、Pythonで記述されたライブラリです。PySparkを用いることで、分散クラスター(マルチノード)あるいはシングルノードでもアプリケーションを並列に実行することができます。
Apache Sparkは大規模かつパワフルな分散データ処理、機械学習アプリケーションのための分析処理エンジンです。
PySparkの機能
インメモリの計算処理
並列化による分散処理
さまざまなクラスターマネージャ(Spark、Yarn、Mesosなど)で利用可能
フォールトトレラント
イミュータブル
遅延評価
キャッシュ & 永続化
データフレームを使う際のビルトインの最適化処理
ANSI SQLのサポート
PySparkの利点
PySparkは、分散によってデータを効率的に処理できる汎用、インメモリ、分散処理エンジンです。
PySparkで実行するアプリケーションは、従来システムより100倍高速です。
データ取り込みパイプラインにおいてPySparkを用いることで非常に大きな効果を得ることができます。
PySparkを用いることで、Hadoop HDFS、AWS S3など数多くのファイルシステムのデータを処理することができます。
また、PySparkはストリーミングやKafkaを用いてリアルタイムデータを処理することに使うことができます。
PySparkのストリーミングを用いることで、ファイルシステムやソケットからのストリームからファイルをストリーミングすることができます。
PySparkはネイティブで機械学習、グラフライブラリを持っています。
PySparkのモジュールとパッケージ
PySpark RDD (pyspark.RDD)
PySpark DataFrame と SQL (pyspark.sql)
PySpark Streaming (pyspark.streaming)
PySpark MLib (pyspark.ml, pyspark.mllib)
PySpark GraphFrames (GraphFrames)
PySpark Resource (pyspark.resource) PySpark 3.0で新たに追加
PySparkデータフレームの例
PySparkデータフレームはイミュータブル(不変:作成すると変更できません)、フォールトトレンラントであり、変換処理は遅延評価されます(アクションが呼び出されるまで実行されません)。PySparkデータフレームはクラスターで分散され(PySparkデータフレームのデータはクラスターの異なるマシンに格納されることを意味します)、PySparkのいかなるオペレーションは全てのマシン上で並列に実行されます。
続きは下記リンクへ!
それじゃーね!
ref
この記事が気に入ったらサポートをしてみませんか?