本連載では、Sparkの概要や、ローカル環境でのSparkのクラスタの構築、Sparkの基本的な概念やプログラミングの方法を説明していきます。今回は、簡単な機械学習のSparkアプリケーションを作成し、Amazon EMRで実行するまでを説明します。
本連載「Amazon EMRで構築するApache Spark超入門」では、Apache Spark(以下、Spark)の概要や、ローカル環境でのSparkのクラスターの構築、Sparkの基本的な概念やプログラミングの方法を説明していきます。前回の「Apache Sparkとは何か――使い方や基礎知識を徹底解説」では、Sparkについての概要と、ローカル環境でのクラスターの構築方法、spark-shellの使い方を簡単に説明しました。
今回は、簡単な機械学習のSparkアプリケーションを作成し、Amazon EMR(Elastic MapReduce)(以下、EMR)で実行するまでを説明します。今回作成するアプリケーションは、Amazon S3(以下、S3)に置いてあるデータファイルを読み込み、回帰分析を行うものです。Scalaで実装します。
サンプルコードの実行には、AWSのアカウントが必要になるので、ご用意の上で本稿を読むことをお勧めします。しかし、面倒な方はそのまま読んでいただいても構いません。Sparkで簡単に機械学習のアプリケーションが作成できることが実感できると思います。
話を分かりやすく簡単にするため、三角関数の「sin関数」を元にした下記のような分布データを作成します。
下記のコマンドで作成してみてください(Rubyの実行環境が必要です)。
ruby -e 'puts "x,y";Range.new(0,5).step(0.05).each {|i| puts "#{i},#{Math.sin(i)+Random.rand(-0.3..0.3)}"}' > data.csv
これでデータの用意ができました。
Sparkのアプリケーションの開発のために、Scalaの開発環境を整えます。
今回は、「SBT(Simple Build Tool)」を使います。SBTはScalaのコードをビルドしたり、依存ライブラリを管理したりすることができる便利なツールです。
Macであれば、下記のコマンドでインストールできます。
brew install sbt
SBTプロジェクトを作成します。適当な場所に、下記のようにファイルとディレクトリの配置を行ってください。
mkdir SparkExampleApp cd SparkExampleApp mkdir -p src/main/scala touch build.sbt
SBTのプロジェクトでは、ルートディレクトリに「build.sbt」というファイルを作ります。build.sbtではプロジェクトの概要や依存関係を記載します。
早速、build.sbtを下記のように編集してください。
name := "Spark Sample Project" // プロジェクトの名前 version := "1.0" // プロジェクトのバージョン scalaVersion := "2.11.8" // 使用するscalaのバージョン(執筆時点で最新) // 依存ライブラリです。 libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % "2.0.0", "org.apache.spark" %% "spark-mllib" % "2.0.0", "org.apache.spark" %% "spark-sql" % "2.0.0", "com.databricks" %% "spark-csv" % "1.4.0" )
これでプロジェクトの骨組みが完成しました。
Copyright © ITmedia, Inc. All Rights Reserved.