PySpark の概要#

日付: 2025年5月19日 バージョン: 4.0.0

便利なリンク: ライブノートブック | GitHub | 課題 | | コミュニティ | Stack Overflow | 開発者メーリングリスト | ユーザーメーリングリスト

PySpark は Apache Spark の Python API です。Python を使用して、分散環境でリアルタイムかつ大規模なデータ処理を実行できます。また、データをインタラクティブに分析するための PySpark シェルも提供しています。

PySpark は、Python の学習しやすさと使いやすさを Apache Spark のパワーと組み合わせることで、Python に慣れている人なら誰でも、あらゆるサイズのデータを処理および分析できるようにします。

PySpark は、Spark SQL、DataFrame、Structured Streaming、機械学習 (MLlib)、Spark Core など、Spark のすべての機能をサポートしています。

Python Spark Connect Client
Spark SQL Pandas API on Spark Streaming Machine Learning
Spark Core and RDDs

Python Spark Connect クライアント

Spark Connect は、Apache Spark 内のクライアント・サーバー アーキテクチャであり、あらゆるアプリケーションから Spark クラスターへのリモート接続を可能にします。PySpark は Spark Connect サーバーのクライアントを提供し、Spark をサービスとして使用できるようにします。

Spark SQL および DataFrame

Spark SQL は、構造化データとの作業のための Apache Spark のモジュールです。SQL クエリと Spark プログラムをシームレスに混在させることができます。PySpark DataFrame を使用すると、Python と SQL を使用してデータを効率的に読み取り、書き込み、変換、分析できます。Python を使用しても SQL を使用しても、同じ基盤となる実行エンジンが使用されるため、常に Spark の全機能をご活用いただけます。

Pandas API on Spark

Pandas API on Spark を使用すると、複数のノードに分散して実行することで、pandas のワークロードをあらゆるサイズにスケーリングできます。すでに pandas に慣れており、Spark をビッグデータに活用したい場合は、Pandas API on Spark を使用するとすぐに生産性を向上させることができ、コードを変更せずにアプリケーションを移行できます。pandas (テスト、小規模データセット) と Spark (本番、分散データセット) の両方で動作する単一のコードベースを持つことができ、pandas API と Pandas API on Spark をオーバーヘッドなしで簡単に切り替えることができます。

Pandas API on Spark は pandas から Spark への移行を容易にすることを目的としていますが、Spark に慣れていない場合や、どの API を使用するかを決定している場合は、PySpark を使用することをお勧めします (「Spark SQL および DataFrame」を参照)。

Structured Streaming

Structured Streaming は、Spark SQL エンジン上に構築された、スケーラブルで耐障害性の高いストリーム処理エンジンです。静的データに対するバッチ処理と同じ方法でストリーミング計算を表現できます。Spark SQL エンジンは、ストリーミングデータが到着し続けるにつれて、それを増分かつ継続的に実行し、最終結果を更新する処理を行います。

機械学習 (MLlib)

Spark 上に構築された MLlib は、ユーザーが実用的な機械学習パイプラインを作成および調整するのに役立つ、一貫した高レベル API セットを提供する、スケーラブルな機械学習ライブラリです。

Spark Core および RDD

Spark Core は、他のすべての機能が構築される Spark プラットフォームの基盤となる汎用実行エンジンです。RDD (Resilient Distributed Datasets) およびインメモリコンピューティング機能を提供します。

RDD API は使用が難しい低レベル API であり、Spark の自動クエリ最適化機能の恩恵を受けられないことに注意してください。RDD の代わりに DataFrame (上記「Spark SQL および DataFrame」を参照) を使用することを推奨します。これにより、より簡単に意図を表現でき、Spark が最も効率的なクエリを自動的に構築できます。

Spark Streaming (レガシー)

Spark Streaming は、コア Spark API の拡張機能であり、ライブデータストリームのスケーラブルで高スループット、耐障害性の高いストリーム処理を可能にします。

Spark Streaming は Spark のストリーミングエンジンの旧世代であることを注意してください。これはレガシープロジェクトであり、もはや更新されていません。Spark には、Structured Streaming と呼ばれる、より新しく使いやすいストリーミングエンジンがあります。ストリーミングアプリケーションおよびパイプラインでは、こちらを使用してください (「Structured Streaming」を参照)。