Apache Spark で Hello World !!
はじめに
Apache Sparkは、ビッグデータ処理のための高速で汎用性の高いクラスターコンピューティングシステムです。分散処理能力とシンプルなプログラミングモデルを提供し、大規模なデータセットの処理を効率的に行うことができます。このブログでは、Sparkの基本的な概念を学び、初めてのSparkアプリケーション「Hello World」を実装してみます。
Apache Sparkとは?
以下の記事でApache Sparkとは何かを簡単にまとめています。
環境
- 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をダウンロードしてインストールしてください。
java -version
上記のコマンドでJavaが正しくインストールされているか確認できます。
2. Apache Sparkのダウンロード
Apache Sparkの公式サイトからSparkをダウンロードします。
-
環境変数の設定
ダウンロードしたファイルを解凍し、環境変数を設定します。
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