Apache Spark - 大規模データ分析のための統合エンジン

Apache Sparkは、大規模データ処理のための統合分析エンジンです。Java、Scala、Python、Rで高レベルAPIを提供し、一般的な実行グラフをサポートする最適化されたエンジンを提供します。また、SQLと構造化データ処理のためのSpark SQL、pandasワークロードのためのSpark上のpandas API、機械学習のためのMLlib、グラフ処理のためのGraphX、インクリメンタル計算とストリーム処理のための構造化ストリーミングなど、豊富な高レベルツールをサポートしています。

ダウンロード

Sparkは、プロジェクトWebサイトのダウンロードページから入手してください。このドキュメントは、Sparkバージョン3.5.1用です。Sparkは、HDFSおよびYARNにHadoopのクライアントライブラリを使用します。ダウンロードは、いくつかの一般的なHadoopバージョン向けに事前パッケージ化されています。ユーザーは、「Hadoopフリー」バイナリをダウンロードし、Sparkのクラスパスを拡張することで、任意のHadoopバージョンでSparkを実行することもできます。ScalaおよびJavaユーザーは、Maven座標を使用してプロジェクトにSparkを含めることができ、PythonユーザーはPyPIからSparkをインストールできます。

ソースからSparkをビルドする場合は、Sparkのビルドを参照してください。

Sparkは、WindowsとUNIXライクなシステム(例:Linux、Mac OS)の両方で実行され、サポートされているバージョンのJavaが実行されるプラットフォームであれば、どのプラットフォームでも実行できるはずです。これには、x86_64およびARM64上のJVMが含まれます。1台のマシン上でローカルで簡単に実行できます。必要なのは、システムPATHjavaがインストールされているか、Javaインストールを指すJAVA_HOME環境変数があることだけです。

Sparkは、Java 8/11/17、Scala 2.12/2.13、Python 3.8+、およびR 3.5+で実行されます。バージョン8u371より前のJava 8のサポートは、Spark 3.5.0で非推奨になりました。Scala APIを使用する場合、アプリケーションはSparkがコンパイルされたScalaと同じバージョンを使用する必要があります。たとえば、Scala 2.13を使用する場合は、2.13用にコンパイルされたSparkを使用し、Scala 2.13用のコード/アプリケーションもコンパイルします。

Java 11の場合、Apache Arrowライブラリには-Dio.netty.tryReflectionSetAccessible=trueを設定する必要があります。これにより、Apache Arrowが内部でNettyを使用する際のjava.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not availableエラーを防ぎます。

例とシェルを実行する

Sparkには、いくつかのサンプルプログラムが付属しています。Python、Scala、Java、およびRの例は、examples/src/mainディレクトリにあります。

PythonインタープリターでSparkをインタラクティブに実行するには、bin/pysparkを使用します

./bin/pyspark --master "local[2]"

サンプルアプリケーションはPythonで提供されています。例:

./bin/spark-submit examples/src/main/python/pi.py 10

ScalaまたはJavaのサンプルプログラムのいずれかを実行するには、最上位のSparkディレクトリでbin/run-example <class> [params]を使用します。(内部的には、これはアプリケーションを起動するためのより一般的なspark-submitスクリプトを呼び出します)。例:

./bin/run-example SparkPi 10

Scalaシェルの変更バージョンを介してSparkをインタラクティブに実行することもできます。これは、フレームワークを学習するための優れた方法です。

./bin/spark-shell --master "local[2]"

--masterオプションは、分散クラスターのマスターURL、または1つのスレッドでローカルで実行する場合はlocal、N個のスレッドでローカルで実行する場合はlocal[N]を指定します。テストには、最初にlocalを使用する必要があります。すべてのオプションのリストについては、--helpオプションを使用してSparkシェルを実行してください。

バージョン1.4以降、SparkはR APIを提供しています(DataFrame APIのみが含まれています)。RインタープリターでSparkをインタラクティブに実行するには、bin/sparkRを使用します

./bin/sparkR --master "local[2]"

サンプルアプリケーションはRでも提供されています。例:

./bin/spark-submit examples/src/main/r/dataframe.R

Spark Connectを使用したどこでもSparkクライアントアプリケーションの実行

Spark Connectは、Spark 3.4で導入された新しいクライアントサーバーアーキテクチャであり、Sparkクライアントアプリケーションを分離し、Sparkクラスターへのリモート接続を可能にします。クライアントとサーバーの分離により、Sparkとそのオープンエコシステムをどこからでも活用し、任意のアプリケーションに組み込むことができます。Spark 3.4では、Spark ConnectはPySparkのDataFrame APIカバレッジと、ScalaのDataFrame/Dataset APIサポートを提供します。

Spark Connectとその使用方法の詳細については、Spark Connectの概要を参照してください。

クラスターでの起動

Sparkのクラスターモードの概要では、クラスター上で実行する際の重要な概念について説明しています。Sparkは、単独で、またはいくつかの既存のクラスターマネージャーを介して実行できます。現在、デプロイにはいくつかのオプションが提供されています。

ここから進む場所

プログラミングガイド

APIドキュメント

デプロイメントガイド

その他のドキュメント

外部リソース