Apache Spark を使用した MapReduce

Suraj P 2023年6月21日
  1. MapReduce の概要
  2. MapReduceApache Spark で実行
Apache Spark を使用した MapReduce

この記事では、Scala プログラミング言語の助けを借りて、Apache Spark を使用して MapReduce ジョブを実行する方法を学びます。

MapReduce の概要

MapReduce は Hadoop のプログラミング パラダイムであり、大量のデータを並列処理するように設計されています。 この処理または作業全体は、タスクとも呼ばれる小さなチャンクに分割することによって行われます。

これは master-slave アーキテクチャに従っているため、master ノードがタスクを割り当て、slave ノードがより小さなジョブ (タスク) を実行します。 これらのスレーブ(サーバーのクラスター) は、個々の出力を処理して提供します。

MapReduce には、mapper と reducer という 2つのコンポーネントがあります。 最初のフェーズでは、データがマッパーに供給され、受信データがキーと値のペアに変換されます。

マッパーによって生成される出力は、多くの場合、中間出力と呼ばれます。 マッパーのこの出力は、レデューサーへの入力として与えられます。レデューサーは、キーに基づいて集計ソート タイプの計算を行い、最終的な出力であるキーと値の最終的なペアを提供します。

MapReduceApache Spark で実行

MapReduceHadoop システムの重要な部分ですが、Spark を使用して実行することもできます。 よく知られている MapReduce プログラムを見てみましょう。これは、単語カウント コードをよりよく理解するための例として使用します。

したがって、問題のステートメントは、テキスト ファイルが与えられた場合、その中の各単語の頻度を数えなければならないということです。

前提条件:

以下のプログラムを実行するには、これらをシステムにインストールする必要があります。

  1. JDK8
  2. スカラ
  3. ハドゥープ
  4. スパーク

ファイルを HDFS ファイル システムに置き、spark シェルを起動する必要があります。

コード例: 以下のコードは Spark シェルで実行されました。

val ourData = sc.textFile("myFile.txt");

ourData.collect;

val splitLines = ourData.flatMap(line => line.split(" "));

splitLines.collect;

val mapperData = splitLines.map(word => (word,1));

mapperData.collect;

val reducerData = mapperData.reduceByKey(_+_)

reducerData.collect

上記のコードが実行されると、myfile.txt に存在する各単語の頻度が表示されます。

著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub