Apache SparkとJupyter Notebookの使い方

Apache SparkとJupyter Notebookの使い方

  • オーケストレーション
5分で読めます 更新日 Nov 8, 2024

ポイント: Jupyter NotebooksをApache Sparkと統合することで、開発者は慣れ親しんだツールを使用してビッグデータ分析を活用できます。このガイドは、データ分析のためにJupyterとPySparkを設定する方法を示し、インストール手順や最適なパフォーマンスのための構成を強調しています。

  • Jupyterは複数のプログラミング言語をサポートし、データ分析における柔軟性を高めます。
  • PySparkはPythonユーザーがApache Spark機能とシームレスに対話できるようにします。

Apache SparkとJupyter Notebookを使用してデータを可視化および操作する

Apache Sparkは、UCバークレーで開発されたオープンソースの高速な統合分析エンジンで、ビッグデータと機械学習に対応しています。Sparkは、インメモリキャッシングと最適化されたクエリ実行を利用して、迅速で効率的なビッグデータ処理ソリューションを提供します。さらに、Sparkはバッチ処理、インタラクティブクエリ、リアルタイム分析、機械学習、グラフ処理など、複数のワークロードを簡単にサポートできます。これらのすべての機能により、Sparkはデータ分析ツールとしての地位を確立しています。開発者の視点から見ると、Sparkの最大の特長の1つは、複数の言語をサポートしていることです。限られた選択肢しかない多くの他のプラットフォームとは異なり、ユーザーがプラットフォーム固有の言語を学ぶ必要がないように、SparkはR、SQL、Python、Scala、Javaなどの主要なデータ分析言語をすべてサポートしています。Sparkは、開発者が慣れ親しんだ言語を選択し、その言語に対してサポートされているツールやサービスを簡単に利用できる自由を提供します。Pythonを考えると、Jupyter Notebooksは開発者にとって最も人気のあるツールの1つです。しかし、Jupyter NotebookをApache Sparkと連携させるにはどうすればよいのでしょうか?この投稿では、Jupyter、Spark、およびPySparkを利用して、データ分析を実行できるApache Sparkのインストールを行う方法を紹介します。

Jupyter Notebooksの動作

Jupyterは、Jupyterプロジェクトによって管理され、修正されたBSBライセンスの下で配布されるインタラクティブな計算環境です。Notebookは、入力と出力を1つのファイルに統合した共有可能なドキュメントです。これらのノートブックは、以下の構成要素を含むことができます:

  • コード
  • 数学的方程式
  • ナarrativeテキスト
  • 視覚化
  • 統計モデリング
  • その他のリッチメディア

ノートブックの美しさは、開発者が開発、可視化、分析、および情報を追加して、理解しやすく共有可能な単一ファイルを作成できることです。このアプローチは、特定のノートブック内のデータに関連するすべての情報を含めることができるため、データ分析に非常に役立ちます。Jupyterは40以上のプログラミング言語をサポートし、2つの形式で提供されます:

  • クラシックJupyterノートブック
  • JupyterLab

JupyterLabは、Jupyterの機能をさらに強化し、データサイエンスから機械学習までの任意のワークフローをサポートできる、より柔軟なツールを作成します。Jupyterは、データ分析ニーズのためにApache Sparkなどのビッグデータツールもサポートします。(私たちの<\/em>Jupyter Notebooksの包括的な入門書<\/a>をお読みください。)

JupyterをApache Sparkに接続する方法

Jupyter NotebookでSparkを使用する必要がある場合、ScalaはApache Sparkと対話するための理想的な言語です。ただし、ほとんどの開発者は、Pythonなどの慣れ親しんだ言語を使用することを好みます。JupyterはScalaとPythonの両方をサポートしています。しかし、通常、Pythonはその頑健性、使いやすさ、およびpandas、scikit-learn、TensorFlowなどのライブラリの利用可能性により、より柔軟な選択肢です。

almondのようなプロジェクトは、ユーザーがJupyterにScalaを追加できるようにしますが、今回はPythonに焦点を当てます。(Pythonが機械学習のための<\/em>選ばれる言語<\/a>である理由をご覧ください。)

PySpark for Apache Spark & Python

Pythonは

PySparkを介してApache Sparkに接続します。これにより、ユーザーはPython APIを使用してSparkアプリケーションを記述し、Apache SparkのResilient Distributed Datasets(RDD)とインターフェースを持つことができます。PySparkは、Py4Jライブラリを使用してPythonとJVMオブジェクト間のインターフェースを提供します。さらに、PySparkはSpark SQL、DataFrame、MLib、Spark Core、およびStreamingなど、ほとんどのApache Spark機能をサポートしています。

JupyterおよびApache SparkとのPySparkの設定

PySparkを設定する前に、JupyterとApache Sparkをインストールする必要があります。このセクションでは、Jupyter NotebookでSparkを使用するための簡単なインストール手順を説明します。詳細なインストール手順については、Jupyter Notebooks for Data Analyticsガイドを参照し、Sparkの公式ドキュメントを参照してローカル環境に設定できます。

Sparkのインストール

Sparkをインストールするための前提条件として、Java、Scala、およびGitが必要です。次のコマンドを使用してインストールできます:

    sudo apt install default-jdk scala git -y

次に、最新のApache Sparkバージョンを取得し、内容を抽出して、次のコマンドを使用して別のディレクトリに移動します。

    wget https://dlcdn.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz
tar xf spark-*
sudo mv spark-3.2.0-bin-hadoop3.2 /opt/spark

結果

結果

その後、環境変数をシェル構成ファイル(例:.bashrc / .zshrc)に追加して設定できます。

    export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PYSPARK_PYTHON=/usr/bin/python3

SPARK_HOME変数はApache Sparkのインストールを示し、PATHはシステムパスにApache Spark(SPARK_HOME)を追加します。次に、PYSPARK_PYTHON変数はPythonインストールを指します。最後に、start-master.shコマンドを実行してApache Sparkを起動すると、http://localhost:8080/にアクセスしてインストールの成功を確認できます。コマンド

コマンド

Web UI

Web UI

Jupyterのインストール

Jupyterのインストールはシンプルで簡単なプロセスです。次のコマンドを使用してPythonパッケージマネージャーを介して直接インストールできます:

    pip install notebook

PySparkのインストール

PySparkはSparkにバンドルされているため、別途インストールする必要はありません。ただし、Spark SQLやSpark用のPandasなどの追加の依存関係をPythonパッケージマネージャーを使用して別途インストールするオプションもあります。ターミナルで次のコマンドを実行してPySparkを直接起動できます。

    pyspark

結果:

結果

Jupyter NotebookとPySparkを統合する方法

Jupyter NotebookでPySparkを参照する唯一の要件は、.bashrcまたは.zshrcファイルに次の環境変数を追加することです。これにより、PySparkがJupyterにポイントします。

    export PYSPARK_DRIVER_PYTHON='jupyter'
export PYSPARK_DRIVER_PYTHON_OPTS='notebook --no-browser --port=8889'

PYSPARK_DRIVER_PYTHONはJupyterを指し、PYSPARK_DRIVER_PYTHON_OPTSはノートブックを起動する際に使用されるオプションを定義します。この場合、ブラウザなしオプションとWebインターフェースのためのポート8889を示します。上記の変数を使用すると、シェルファイルにはこのソリューションを実行するために必要な5つの環境変数が含まれるはずです。

5つの変数

これで、ターミナルでpyspark コマンドを実行することで、Jupyter Notebookインスタンスを直接起動できます。

pysparkコマンド

重要な注意:ターミナル環境を常に更新することを確認してください。そうしないと、新しく追加された環境変数が認識されません。指定されたURLにアクセスすると、Jupyter Notebook経由でSparkと対話できる準備が整います。

PySparkでJupyter Notebookをテストする

統合が完了したので、残るのはすべてが正常に動作しているかどうかをテストすることです。したがって、Pysparkライブラリを使用し、テストデータセットでデータフレームを作成する単純なPythonスクリプトを実行しましょう。データフレームを作成します:

    # Import Libraries
from pyspark.sql.types import StructType, StructField, FloatType, BooleanType
from pyspark.sql.types import DoubleType, IntegerType, StringType
import pyspark
from pyspark import SQLContext

# Setup the Configuration
conf = pyspark.SparkConf()

spark_context = SparkSession.builder.config(conf=conf).getOrCreate()
sqlcontext = SQLContext(sc)

# Setup the Schema
schema = StructType([
StructField("User ID", IntegerType(),True),
StructField("Username", StringType(),True),
StructField("Browser", StringType(),True),
StructField("OS", StringType(),True),
])

# Add Data
data = ([(1580, "Barry", "FireFox", "Windows" ),
(5820, "Sam", "MS Edge", "Linux"),
(2340, "Harry", "Vivaldi", "Windows"),
(7860, "Albert", "Chrome", "Windows"),
(1123, "May", "Safari", "macOS")
])

# Setup the Data Frame
user_data_df = sqlcontext.createDataFrame(data,schema=schema)

データフレームを印刷します:

    user_data_df.show()

結果:

Jupyter Notebook Pysparkテスト出力

PySpark Web UIを見てみると、ポート4040を介してアクセス可能なスクリプト実行ジョブの詳細が表示されます。

Sparkジョブ

SparkとJupyter Notebookを使用する力

Apache Sparkは強力なデータ分析およびビッグデータツールです。PySparkを使用することで、ユーザーはScalaのような異なる言語を学ぶことなくApache Sparkと対話できます。Jupyter NotebooksとSparkの組み合わせは、開発者に強力で慣れ親しんだ開発環境を提供し、Apache Sparkの力を利用します。

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。