Spark 2.0の回帰分析アプリをScalaのSBTで実装し、EMRで実行Amazon EMRで構築するApache Spark超入門(2)(1/3 ページ)

本連載では、Sparkの概要や、ローカル環境でのSparkのクラスタの構築、Sparkの基本的な概念やプログラミングの方法を説明していきます。今回は、簡単な機械学習のSparkアプリケーションを作成し、Amazon EMRで実行するまでを説明します。

» 2016年09月27日 05時00分 公開
[川原仁人コラビット]

Amazon S3に置いてあるデータファイルを読み込み、Spark 2.0で回帰分析を行う

 本連載「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

 これでデータの用意ができました。

Scalaの便利ツール「SBT」のインストール

 Sparkのアプリケーションの開発のために、Scalaの開発環境を整えます。

 今回は、「SBT(Simple Build Tool)」を使います。SBTはScalaのコードをビルドしたり、依存ライブラリを管理したりすることができる便利なツールです。

 Macであれば、下記のコマンドでインストールできます。

brew install sbt

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"
)

 これでプロジェクトの骨組みが完成しました。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。