👋

Apache Spark で Hello World !!

2024/08/25に公開

はじめに

Apache Sparkは、ビッグデータ処理のための高速で汎用性の高いクラスターコンピューティングシステムです。分散処理能力とシンプルなプログラミングモデルを提供し、大規模なデータセットの処理を効率的に行うことができます。このブログでは、Sparkの基本的な概念を学び、初めてのSparkアプリケーション「Hello World」を実装してみます。

Apache Sparkとは?

以下の記事でApache Sparkとは何かを簡単にまとめています。
https://zenn.dev/tn_a/articles/bdec42c9ca182b


環境

  • macOS Sonoma 14.6.1
  • zsh 5.9
  • Python 3.9.6
  • pip 24.2

環境の準備

まずは、Apache Sparkを使ってアプリケーションを実行するための環境を整えます。以下は、ローカル環境でのSparkのセットアップ方法です。

1. Javaのインストール

Apache SparkはJavaランタイムに依存しています。Javaがインストールされていない場合は、以下のサイトからJDKをダウンロードしてインストールしてください。
https://www.oracle.com/java/technologies/downloads/

java -version

上記のコマンドでJavaが正しくインストールされているか確認できます。

2. Apache Sparkのダウンロード

Apache Sparkの公式サイトからSparkをダウンロードします。
https://spark.apache.org/downloads.html

  • 環境変数の設定
    ダウンロードしたファイルを解凍し、環境変数を設定します。
tar -xzf spark-3.5.2-bin-hadoop3.tgz
sudo mv spark-3.5.2-bin-hadoop3.tgz /opt/spark
echo 'export SPARK_HOME=/opt/spark' >> ~/.zshrc
echo 'export PATH=$PATH:$SPARK_HOME/bin' >> ~/.zshrc
  • 設定を反映
source ~/.zshrc

3. PySparkのインストール

PythonでSparkアプリケーションを実行するために、PySparkをインストールします。

pip install pyspark

これで、PythonからSparkを利用する準備が整いました。


Hello World

実際に「Hello World」アプリケーションを作成してみましょう。このアプリケーションでは、簡単なテキスト処理を行います。

1. PySparkシェルの起動

PySparkシェルを起動します。

pyspark

これで、Pythonのインタラクティブシェルが起動し、Sparkコンテキスト(sc)とSQLコンテキスト(sqlContext)が自動的に生成されます。

2. RDDの作成

次に、Hello Worldの文字列を含むRDD(Resilient Distributed Dataset)を作成し、各単語の出現回数を数える簡単なアプリケーションを作成します。

# RDDの作成
text_rdd = sc.parallelize(["Hello World", "Hello Spark", "Hello Data"])

# 単語ごとに分割
words_rdd = text_rdd.flatMap(lambda line: line.split(" "))

# 単語の出現回数を計算
word_counts = words_rdd.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)

# 結果を表示
for word, count in word_counts.collect():
    print(f"{word}: {count}")

3. アプリケーションの説明

  • RDDの作成: sc.parallelize()を使って、Hello Worldなどの文字列を含むRDDを作成します。
  • 単語ごとに分割: flatMap()を使って、各行の文字列を単語に分割します。
  • 単語の出現回数を計算: map()reduceByKey()を組み合わせて、各単語の出現回数を計算します。
  • 結果を表示: collect()メソッドを使って、RDDの内容をPythonオブジェクトとして収集し、結果を表示します。

4. 実行結果

上記のコードを実行すると、以下のような出力が得られます。

Hello: 3
World: 1
Spark: 1
Data: 1

おわりに

これで、Apache Sparkの基本的な使い方を学び、初めてのSparkアプリケーションを作成することができました。Sparkは強力で柔軟性の高いフレームワークであり、今回のシンプルな例を応用することで、より複雑なデータ処理タスクを効率的に実行できるようになります。次のステップとして、Sparkの他の機能や、実際のデータセットを使った応用例に挑戦してみてください。

Discussion